Sql server 如果月份和年份不存在行,则SQL在子表中显示0计数
我有两张桌子和两份订单。我想得到每个月的订单数量(包括0个数量),我是按客户ID的月份和年份分组的。 注意:客户端正在使用SQL 2000:( 这就是我想要的Sql server 如果月份和年份不存在行,则SQL在子表中显示0计数,sql-server,sql-server-2000,Sql Server,Sql Server 2000,我有两张桌子和两份订单。我想得到每个月的订单数量(包括0个数量),我是按客户ID的月份和年份分组的。 注意:客户端正在使用SQL 2000:( 这就是我想要的 DistID Month Year Orders ------------------------------ 1 1 2012 4 1 2 2012 13 1 3 2012 5 2 1 2012
DistID Month Year Orders
------------------------------
1 1 2012 4
1 2 2012 13
1 3 2012 5
2 1 2012 3
2 2 2012 0
2 3 2012 0
3 1 2012 8
3 2 2012 0
3 3 2012 3
4 1 2012 1
4 2 2012 0
4 3 2012 1
5 1 2012 6
5 2 2012 6
5 3 2012 0
这就是我得到的
DistID Month Year Orders
------------------------------
1 1 2012 4
1 2 2012 13
1 3 2012 5
2 1 2012 3
3 1 2012 8
3 3 2012 3
4 1 2012 1
4 3 2012 1
5 1 2012 6
5 2 2012 6
我知道为什么。这是因为订单表中没有特定月份的行。如果订单表中没有该月份和年份的行,有没有办法将计数设为0
这是我到目前为止所拥有的
SELECT
D.DistID,
DATEPART(MONTH, Order_Date) AS [Month],
DATEPART(YEAR, Order_Date) AS [Year],
SUM(Total_PV) AS TotalPV,
COUNT(D.DistId) AS Orders
FROM Distributor D
LEFT OUTER JOIN Order O ON D.DistID = O.Distributor_ID
WHERE DATEPART(YEAR, Order_Date) > 2005
GROUP BY DistID, DATEPART(MONTH, Order_Date), DATEPART(YEAR, Order_Date)
感谢您的输入,您可以创建一个包含所有月份和年份的表格,如:
create table MonthList(year int, month int);
如果用所有可用年份填充,则可以左键加入
:
select o.distributor_id
, ml.month
, ml.year
, sum(o.total_pv) as totalpv
, count(d.distid) as orders
from monthlist ml
left join
[order] o
on datepart(year, o.order_date) = ml.year
and datepart(month, o.order_date) = ml.month
where ml.year > 2005
group by
o.distributor_id
, ml.month
, ml.year
如果不使用该表中的列,则无需加入分销商。您可以创建一个包含所有月份和年份的表,如:
create table MonthList(year int, month int);
如果用所有可用年份填充,则可以左键加入
:
select o.distributor_id
, ml.month
, ml.year
, sum(o.total_pv) as totalpv
, count(d.distid) as orders
from monthlist ml
left join
[order] o
on datepart(year, o.order_date) = ml.year
and datepart(month, o.order_date) = ml.month
where ml.year > 2005
group by
o.distributor_id
, ml.month
, ml.year
如果您不使用该表中的列,则无需加入分销商。谢谢您的回复。是的,我需要分销商,因为我需要说明表中的每个分销商。因此0订单。:)还有其他想法吗?这真让我烦透了。我想这对一个SQL的家伙来说是非常直截了当的。这是否更适合SQL论坛?谢谢谢谢你的回复。是的,我需要分销商,因为我需要说明表中的每个分销商。因此,订单数量为0。:)还有什么想法吗?这真让我烦透了。我想这对一个SQL的家伙来说是非常直截了当的。这是否更适合SQL论坛?谢谢