テーブルのさまざまなフィールドで 1 から 100 までの数字の頻度を数えようとしています。
次のデータを含む「結果」テーブルがあるとします。
LottoId Winner Second Third
--------- --------- --------- ---------
1 1 2 3
2 1 2 3
数値ごとに頻度を取得できるようにしたいと思います。そのために、次のコードを使用しています。
--Creating numbers temp table
CREATE TABLE #Numbers(
Number int)
--Inserting the numbers into the temp table
declare @counter int
set @counter = 0
while @counter < 100
begin
set @counter = @counter + 1
INSERT INTO #Numbers(Number) VALUES(@counter)
end
--
SELECT #Numbers.Number, Count(Results.Winner) as Winner,Count(Results.Second) as Second, Count(Results.Third) as Third FROM #Numbers
LEFT JOIN Results ON
#Numbers.Number = Results.Winner OR #Numbers.Number = Results.Second OR #Numbers.Number = Results.Third
GROUP BY #Numbers.Number
問題は、カウントが各数値に対して同じ値を繰り返していることです。この特定のケースでは、次の結果が得られます。
Number Winner Second Third
--------- --------- --------- ---------
1 2 2 2
2 2 2 2
3 2 2 2
...
これを取得する必要がある場合:
Number Winner Second Third
--------- --------- --------- ---------
1 2 0 0
2 0 2 0
3 0 0 2
...
私は何が欠けていますか?