これら 2 つのクエリを 1 つに結合することは可能ですか? 現在、実行している 2 つの個別のクエリがあり、次のように表示されます。
- ユーザー名と開いた問題の数
- ユーザー名とクローズした問題の数
未解決の問題:
SELECT FirstName +' ' + LastName AS 'UserName', COUNT(u.UserID) AS IssuesOpened
FROM Users u
LEFT OUTER JOIN Issues i ON i.CreatedByUserID = u.UserID
WHERE i.DateCreated BETWEEN '06/30/2012 23:59:59' AND '07/01/2013 00:00:01'
GROUP BY LastName, FirstName
結果は次のようになります。
UserName | IssuesOpened
-----------------------
User 1 10
User 2 8
User 3 55
解決済みの問題:
SELECT FirstName +' ' + LastName AS 'UserName', COUNT(u.UserID) AS IssuesClosed
FROM Users u
LEFT OUTER JOIN Issues i ON i.ResolvedByUserID = u.UserID
WHERE ResolvedDate BETWEEN '06/30/2012 23:59:59' AND '07/01/2013 00:00:01'
GROUP BY LastName, FirstName
結果は次のようになります。
UserName | IssuesClosed
-----------------------
User 1 8
User 2 2
User 3 40
これを取得するには、これら 2 つのクエリを結合したいと思います。
UserName | IssuesOpened | IssuesClosed
--------------------------------------
User 1 10 8
User 2 8 2
User 3 55 40
私はこのように醜いことを試しました:
SELECT FirstName + ' ' + LastName AS UserName,
(SELECT COUNT(u.UserID)
FROM Users u
LEFT OUTER JOIN Issues i ON i.ResolvedByUserID = u.UserID
WHERE ResolvedDate BETWEEN '06/30/2012 23:59:59' AND '07/01/2013 00:00:01')
AS IssuesClosed,
(SELECT COUNT(u.UserID)
FROM Users u
LEFT OUTER JOIN Issues i ON i.CreatedByUserID = u.UserID
WHERE i.DateCreated BETWEEN '06/30/2012 23:59:59' AND '07/01/2013 00:00:01')
AS IssuesOpened
FROM Users u
GROUP BY FirstName, LastName
ただし、各サブクエリで句を削除したためGROUP BY
、行の合計量が返されるだけです。
アップデート
データを SqlFiddle にロードできないため (クエリ ウィンドウとスキーマ ウィンドウの両方で 8000 文字しか保持できません)、結果と sgeddes の結果のスクリーンショットをいくつか思いつきました。
sgeddes 結果
1 つ気になるのは、sgeddes の結果の最後の行で、ユーザー "Web***" の "Closed" が 449 になっていることです。これは不可能です。そのユーザー (Web***) は、顧客が Web サイトを通じて問題を開く方法を決定する方法のプレースホルダーであるためです。この偽のユーザーは、当社のシステムにアクセスできず、チケットを閉じることもできません。