2017-03-10 9 views
1

私はこのSQLのピボット選択

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 

私のコードのような結果を取得しています。この

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 

のように一つのテーブルを持って

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 

本日のデータを選択します。

+0

あなたの予想される出力は何ですか? –

+1

私はあなたのデータを読むことができません、また、保証を集約するあなたのロジックは不明です。 –

+0

@ジャッキー私の最初の選択が、保証とoutwarranty個別の行を取得しています。 – NAJEEB

答えて

1

は、あなたがこれを必要とするように見える:

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 

Example

+0

これは、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでは無効です。このエラーが発生しました。 – NAJEEB

+0

dailyreceipt.warranty – NAJEEB

+0

これは問題なく動作します。この例を見てください:http://rextester.com/GKXCDD58642 –