繁体   English   中英

根据不同的日期从同一列中选择计数

[英]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将忽略NULLsELSE 0将分配一个值。 完全将其删除将意味着它将不计入声明的ELSE方面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM