SQL 寻找全新的客户
SQL Find Brand New Clients
我正在尝试 运行 一个脚本,以仅将客户的第一个(最小)发票日期设置为昨天。存储过程将 运行 在星期五早上提供结果(我们 运行 我们在星期四开票),因此它将 return 任何新客户基于昨天的第一个发票日期。
Dbo.invoice 包含我们的发票;
dbo.company包含客户记录;
dbo.contact包含实际客户员工;
dbo.match 包含正在出售的 product/service
select
co.company_id, co.name, i.DATE_EFFECTIVE, i.INVOICE_ID
from dbo.match m
inner join dbo.contact c on m.CONTACT_ID_BILLING = c.CONTACT_ID
inner join dbo.company co on c.COMPANY_ID = co.COMPANY_ID
inner join dbo.invoice i on co.company_id = i.company_id
WHERE min(i.date_effective) = (getdate() - 1)
^^^ 像这样
使用聚合和 having
子句:
select co.company_id, co.name, min(i.DATE_EFFECTIVE)
from dbo.match m join
dbo.contact c
on m.CONTACT_ID_BILLING = c.CONTACT_ID join
dbo.company co
on c.COMPANY_ID = co.COMPANY_ID join
dbo.invoice i
on co.company_id = i.company_id
group by co.company_id, co.name
having min(i.data_effective) >= dateadd(day, -1, convert(date, getdate())) and
min(i.data_effective) < convert(date, getdate());
这不包括发票 ID。在这种情况下,它似乎并不特别重要。如果只有一个,则可以将 max(i.invoice_id)
添加到 select
.
我正在尝试 运行 一个脚本,以仅将客户的第一个(最小)发票日期设置为昨天。存储过程将 运行 在星期五早上提供结果(我们 运行 我们在星期四开票),因此它将 return 任何新客户基于昨天的第一个发票日期。
Dbo.invoice 包含我们的发票;
dbo.company包含客户记录;
dbo.contact包含实际客户员工;
dbo.match 包含正在出售的 product/service
select
co.company_id, co.name, i.DATE_EFFECTIVE, i.INVOICE_ID
from dbo.match m
inner join dbo.contact c on m.CONTACT_ID_BILLING = c.CONTACT_ID
inner join dbo.company co on c.COMPANY_ID = co.COMPANY_ID
inner join dbo.invoice i on co.company_id = i.company_id
WHERE min(i.date_effective) = (getdate() - 1)
^^^ 像这样
使用聚合和 having
子句:
select co.company_id, co.name, min(i.DATE_EFFECTIVE)
from dbo.match m join
dbo.contact c
on m.CONTACT_ID_BILLING = c.CONTACT_ID join
dbo.company co
on c.COMPANY_ID = co.COMPANY_ID join
dbo.invoice i
on co.company_id = i.company_id
group by co.company_id, co.name
having min(i.data_effective) >= dateadd(day, -1, convert(date, getdate())) and
min(i.data_effective) < convert(date, getdate());
这不包括发票 ID。在这种情况下,它似乎并不特别重要。如果只有一个,则可以将 max(i.invoice_id)
添加到 select
.