[英]Select counts from same column based on different dates
我有几个像这样的桌子
Table1
Name varchar
ID int
Table2
ID int
Run_Date datetime
我试图在一列中选择名称,然后将日期计数分为两列。 第一列是上周每个名称的所有日期,第二列是上周所有名称的所有计数。 结果看起来像这样
所以如果我的桌子看起来像这样
Table1
Name1 1
Name2 2
Name3 3
Table2
1 2016-11-21 8:40:23.570
2 2016-11-21 8:50:23.570
1 2016-11-21 9:40:23.570
1 2016-11-21 10:40:23.570
1 2016-11-16 10:40:23.570
2 2016-11-16 10:40:23.570
3 2016-11-21 8:40:23.570
我的结果看起来像
Name This_Week Last_week
Name1 3 1
Name2 1 1
Name3 1 0
我可以通过分别获得值
WHERE DATEPART(wk, Run_Date) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE())
我只需要在一周后添加-1,即可获得上周的所有信息。 如何将它们并排显示在同一张桌子中?
我试图做一个案例
COUNT(CASE WHEN DATEPART(wk, Run_DATE) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE()) THEN 1 ELSE 0 END) AS This_Week
但是看起来它只是计算数据库中所有名称的所有日期。
COUNT(CASE WHEN DATEPART(wk, Run_DATE) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE()) THEN 1 END) AS This_Week
取出ELSE 0
。
COUNT
将忽略NULLs
但ELSE 0
将分配一个值。 完全将其删除将意味着它将不计入声明的ELSE
方面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.