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

Sql 根据不同日期从同一列中选择计数,sql,sql-server,Sql,Sql Server,我有两张像这样的桌子 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:

我有两张像这样的桌子

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
我尝试在一列中选择名称,然后将日期计数分为两列。第一列是上周每个姓名的所有日期,第二列是本周每个姓名的所有计数。结果会像这样

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
如果我的桌子看起来像这样

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

取出
ELSE 0


COUNT
将忽略
NULLs
ELSE 0
将分配一个值。把它全部去掉就意味着它不会计算语句的
部分。

叹气。我应该看到的。谢谢,没问题,这很容易被忽视,我相信我自己也做过几次。另一种修复方法是将其更改为SUM(…),并保留case语句。计数是很好的,例如,如果您想计算不同的ID、日期等,而和总和一样,您无法完成这些。我应该看到的。谢谢,没问题,这很容易被忽视,我相信我自己也做过几次。另一种修复方法是将其更改为SUM(…),并保留case语句。计数是很好的,例如,如果您想计算不同的ID、日期等,而使用SUM则无法完成