私はこのサイトで12近くの同様の問題を読みましたが、私の特定のケースはどこにも取り上げられていなかったと思います。私はdbaではありません。これは、ここで誰よりもSQLを知っていたために自発的に行ったサイドプロジェクトです。したがって、誰かがこのクエリが災害であると言っても、個人的には取り上げません。:-)
これは私の質問です:
SELECT COUNT(a.issue_type_id) as DistinctIssues, b.issue_type_name, c.subissue_type_name, null AS DistinctTickets
FROM [somedb].[dbo].[wh_task] AS a
INNER JOIN [somedb].[dbo].[wh_issue_type] AS b ON a.issue_type_id = b.issue_type_id
INNER JOIN [somedb].[dbo].[wh_subissue_type] AS c ON a.subissue_type_id = c.subissue_type_id
WHERE a.[create_time] between '11/01/12' AND '01/31/13'
AND a.[account_id] = 123456
AND a.[account_contact_id] is not null
GROUP BY b.issue_type_name, c.subissue_type_name
UNION
SELECT null as DistinctIssues, b.issue_type_name, c.subissue_type_name, COUNT(a.issue_type_id) as DistinctTickets
FROM [somedb].[dbo].[wh_task] AS a
INNER JOIN [somedb].[dbo].[wh_issue_type] AS b ON a.issue_type_id = b.issue_type_id
INNER JOIN [somedb].[dbo].[wh_subissue_type] AS c ON a.subissue_type_id = c.subissue_type_id
WHERE a.[create_time] between '11/01/12' AND '01/31/13'
AND a.[account_id] = 123456
GROUP BY b.issue_type_name, c.subissue_type_name
そして、結果は次のようになります。
DistinctIssues issue_type_name subissue_type_name DistinctTickets
NULL Storage EMC 45
NULL Storage HP 2
NULL Symantec Anti Virus 1
NULL Symantec Backup Exec 4
NULL Virtualization Environmental 1
NULL Virtualization Network 5
1 Microsoft Server 2003 NULL
1 Microsoft Windows 7 NULL
1 Network Performance NULL
1 Virtualization Environmental NULL
2 Exchange Database NULL
私が何をしようとしているのか、ここから推測できると思います。2つの発行タイプでグループ化しており、すべてのチケットの数と、それらのチケットのサブセットの数が必要です。私のデータベースはMSSQLサーバーです(2008年だと思います)。私はビューにしかアクセスできませんが、それだけの価値があります。