次のようなデータを含むテーブルがあります。
A1 FID A2 0 0 39 1 0 23 0 1 16 1 1 64 2 1 12 0 2 76 0 3 11 0 4 87
そして、これをリストするビューを作成したいと思います:
FID Col0 Col1 Col2 0 39 23 ヌル 1 16 64 12 2 76 ヌルヌル 3 11 ヌルヌル 4 87 ヌルヌル
これは T-SQL でどのように可能になるのでしょうか?
次のようなデータを含むテーブルがあります。
A1 FID A2 0 0 39 1 0 23 0 1 16 1 1 64 2 1 12 0 2 76 0 3 11 0 4 87
そして、これをリストするビューを作成したいと思います:
FID Col0 Col1 Col2 0 39 23 ヌル 1 16 64 12 2 76 ヌルヌル 3 11 ヌルヌル 4 87 ヌルヌル
これは T-SQL でどのように可能になるのでしょうか?
次のようなものを使用できます。
SELECT FID,
Col0 = MAX(CASE WHEN A1 = 0 THEN A2 END),
Col1 = MAX(CASE WHEN A1 = 1 THEN A2 END),
Col2 = MAX(CASE WHEN A1 = 2 THEN A2 END)
FROM T
GROUP BY FID;
または、 PIVOTを使用することもできます
SELECT pvt.FID,
[Col0] = pvt.[0],
[Col1] = pvt.[1],
[Col2] = pvt.[2]
FROM T
PIVOT
( MAX(A2)
FOR A1 IN ([0], [1], [2])
) pvt
A1 の値の数が不明で、したがって列の数も不明な場合、ビューでこれを行うことはできません。動的 SQL を使用する必要がありますが、これは通常、SQL サーバー自体ではなく、アプリケーション層で処理する方が適切です。