我正在尝试创建显示12个月数据的客户报告。有一个Billing_Month
字段,始终设置为该月的第一天,例如14年10月1日。有些客户并不总是每个月都有数据,但我需要在这几个月内返回零值。
我认为我很接近,但它的效果还不太好。有人能告诉我我做错了吗?
SELECT Sum(a.price) AS price,
Master_Account_Name,
b.Billing_Month
FROM tblbilling_detail_ec2 a
LEFT JOIN tblbilling_detail_ec2 b
ON a.ID = b.ID
WHERE master_account_name = 'TestCustomer'
AND b.billing_month BETWEEN Dateadd(yy, -1, '11/1/14') AND
Dateadd(m, -1, '11/1/14')
GROUP BY b.Billing_Month,
Master_Account_Name
答案 0 :(得分:0)
如果所有客户都需要退货,无论是否有活动,那么您可以使用客户表作为基表,或者您可以对客户表进行OUTER加入以确保抓住所有客户。
SELECT Sum(a.price) AS price,
cust.Master_Account_Name,
b.Billing_Month
FROM tblbilling_detail_ec2 a
LEFT JOIN tblbilling_detail_ec2 b
ON a.ID = b.ID
LEFT OUTER JOIN cust on a.master_account_name = cust.master_account_name
WHERE a.master_account_name = 'TestCustomer'
AND b.billing_month BETWEEN Dateadd(yy, -1, '11/1/14') AND
Dateadd(m, -1, '11/1/14')
GROUP BY b.Billing_Month,
Master_Account_Name