CASE ステートメントでカウントを複数の列に選択するときに問題が発生しました。CASE ステートメントがどのように機能するかは、C/C++ の IF ステートメントに似ています。値が X に等しい場合、Y を実行する ELSE Z を実行します。
この問題を説明するために、'Names' という列内の名前をカウントし、'Date' 列でグループ化するクエリを提供します。
SELECT [Date]
COUNT( CASE WHEN [Name] = 'John' THEN 1 ELSE NULL END) AS 'John',
COUNT( CASE WHEN [Name] = 'Joe' THEN 1 ELSE NULL END) AS 'Joe',
COUNT( CASE WHEN [Name] = 'Moe' THEN 1 ELSE NULL END) AS 'Moe',
COUNT( CASE WHEN [Name] = 'Nick' THEN 1 ELSE NULL END) AS 'Nick',
COUNT( CASE WHEN [Name] = 'Zack' THEN 1 ELSE NULL END) AS 'Zack'
FROM [MyDatabase].[dbo].[LogInData]
WHERE [Date] >= '2013-07-01'
GROUP BY [Date]
これは、数えたい名前を知っていることを前提としています。新しい名前で、クエリで定義されていない名前を 1 行でカウントしたい場合はどうすればよいでしょうか? テーブル内のすべての DISTINCT 名を動的に検索し、コードに新しい名前を追加することなく、上記のように自動的に個別にカウントするにはどうすればよいですか?
ご協力いただきありがとうございます。私はまだ複雑なクエリの作成に SQL を利用するさまざまな方法を学ぼうとしています。私は正確な答えを探しているわけではありませんが、私を正しい方向に向けるための助けは素晴らしいでしょう. 私はすべて、与えられたものとは対照的に、知識を学び、拡大することに賛成です。