小さな SQL クエリについて助けが必要です。次の表を検討してください。
TicketNo | Rules | Audit Result
---------------------------------
PR123 | some random strings | Audited
PR123 | some random strings | Not Audited
PR123 | some random strings | Audited
PR123 | some random strings | Audited
PR123 | some random strings | Not Audited
PR123 | some random strings | Not Audited
PR123 | some random strings | Audited
PR999 | some random strings | Audited
PR999 | some random strings | Audited
PR999 | some random strings | Audited
PR999 | some random strings | Audited
PR999 | some random strings | Audited
PR111 | some random strings | Not Audited
PR111 | some random strings | Not Audited
PR111 | some random strings | Not Audited
PR111 | some random strings | Not Audited
次の結果が必要です。
Ticket | Count of Audited Rules | Count of NOT-Audited Rules
------------------------------------------------------------
PR123 | 4 | 3
PR999 | 5 | 0
PR111 | 0 | 4
私は試した:
Select T1.TicketNo,T1.Audited_Count,T2.NonAudited_Count
FROM
(
Select [TicketNo], COUNT([TicketNo]) AS Audited_Count
from [Resolved Results$] where [Audit Result] = 'Audited'
group by TicketNo
) T1
inner JOIN
(
Select [TicketNo], COUNT([TicketNo]) AS NonAudited_Count
from [Resolved Results$] where [Audit Result] <> 'Audited'
group by TicketNo
) T2
on T1.[TicketNo] = T2.[TicketNo]
ただし、上記のコマンドは、監査されたルールのみ、または監査されていないルールのみを持つチケットでは機能せず、両方の種類のルールを持つチケットでのみ機能します。
誰かがクエリで私を助けてくれますか?
注意: OleDB では内部結合のみが機能するため、内部結合以外の使用は避けてください。どうもありがとう
編集:ゴードンの最初の答えは理想的には機能するはずですが、残念ながらExcel用のOLEDBドライバーはそれをサポートしていません。ただし、iff(..) を使用するというゴードンの提案は機能しました。
私が使用している最後のクエリは次のとおりです。
select [TicketNo],
sum(iif([Audit Result] = "AUDITED", 1, 0)) as Audited,
sum(iif([Audit Result] = "NOT AUDITED", 1, 0)) as NotAudited
from [Resolved Results$]
group by [TicketNo];
ありがとうゴードン!