Sql server Sql数据透视选择

Sql server Sql数据透视选择,sql-server,Sql Server,我有一张这样的桌子 DRID ReceivedUser ReceivedDate JobOrder Warranty Service DeliveredUser DeliveredDate Active 1 abc 3/7/2017 78330 O 2 xyz 3/9/2017 N 2 abc

我有一张这样的桌子

DRID    ReceivedUser    ReceivedDate    JobOrder    Warranty    Service DeliveredUser   DeliveredDate   Active
1       abc             3/7/2017        78330       O           2       xyz             3/9/2017        N
2       abc             3/9/2017        93045       O           2       abc             3/9/2017        N
3       xyz             3/9/2017        10620       O           2       xyz             3/9/2017        N   
4       xyz             3/9/2017        11393       O           2                                       Y 
5       pqr             3/9/2017        12101       O           2       xyz             3/9/2017        N
6       xyz             3/9/2017        12545       I           2       pqr             3/9/2017        N
7       pqr             3/9/2017        13512       O           2       xyz             3/9/2017        N
8       xyz             3/9/2017        13642       I           2       xyz             3/9/2017        N
9       xyz             3/9/2017        15190       O           2       abc             3/9/2017        N
我试着这样选择

Received    Warranty    Outwarranty Total
abc         0           2           2
xyz         2           3           5
pqr         0           2           2
Received    Warranty    Outwarranty Total
xyz         2           0           2
xyz         0           3           3
abc         0           2           2
pqr         0           2           2
但我得到的结果是这样的

Received    Warranty    Outwarranty Total
abc         0           2           2
xyz         2           3           5
pqr         0           2           2
Received    Warranty    Outwarranty Total
xyz         2           0           2
xyz         0           3           3
abc         0           2           2
pqr         0           2           2
我的代码

select ReceivedUser,Case WHEN Warranty='i' THEN COUNT(JobOrder) Else 0 END As Warranty,Case WHEN 
Warranty='O' THEN Count(JobOrder) ELSE 0 End AS OutWarranty,Count(JobOrder) As Total
 from DailyReceipt
 where CAST(ReceivedDate AS date)=GETDATE()
 Group By ReceivedUser,Warranty

根据今天的日期选择数据。

看起来您需要:

select ReceivedUser,sum(Case WHEN Warranty='i' THEN 1 Else 0 END) As Warranty,sum(Case WHEN 
Warranty='O' THEN 1 ELSE 0 End) AS OutWarranty,Count(JobOrder) As Total
from DailyReceipt
where CAST(ReceivedDate AS date)=GETDATE()
Group By ReceivedUser

您的预期输出是什么?我无法读取您的数据,而且您聚合保修的逻辑也不清楚。@jacky我的第一个选择,但我正在获取保修和OutArranty单独的行。我尝试了此获取错误“在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”抱歉,詹姆斯,这是我的错,你的代码运行得很好。真的很有帮助。谢谢