0

次のようなデータを含むテーブルがあります。

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 でどのように可能になるのでしょうか?

4

1 に答える 1

1

次のようなものを使用できます。

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

SQL Fiddle での両方の例

A1 の値の数が不明で、したがって列の数も不明な場合、ビューでこれを行うことはできません。動的 SQL を使用する必要がありますが、これは通常、SQL サーバー自体ではなく、アプリケーション層で処理する方が適切です。

于 2013-09-30T16:15:21.923 に答える