2

SQL Server で行を列として表示したい。

私のテーブルは次のようになります。

images_id item_id images_name
-------------------------------
1 1 image1.jpg
2 1 画像2.jpg
3 1 画像3.jpg
4 2 image4.jpg
5 2 画像5.jpg
6 2 画像6.jpg

この出力が欲しい:

images_id item_id 画像1 画像2 画像3    
-------------------------------------------------- ----
1 1 image1.jpg image2.jpg image3.jpg
2 2 image4.jpg image5.jpg image6.jpg

ここに画像リンクがあります。

これは可能ですか?item_id は動的に変更可能でなければなりません (安定していません)。

4

3 に答える 3

0

これは、動的 SQL を使用しないと不可能です。PIVOT では、列を指定する必要があります。

動的 SQL が受け入れられるかどうか教えてください。例を示します。

于 2010-07-15T22:11:18.703 に答える
0

これに動的 SQL を使用する方法は次のとおりです。

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME('image' + cast(row_number() over(partition by itemid order by imageid) as varchar(5))) 
            FROM test c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT itemid, ' + @cols + ' from 
            (
                select itemid, imagename, 
                  ''image'' + cast(row_number() over(partition by itemid order by imageid) as varchar(5)) col
                from test
           ) x
            pivot 
            (
                min(imagename)
                for col in (' + @cols + ')
            ) p '


execute(@query)

デモで SQL Fiddle を参照してください

于 2012-08-09T14:40:33.033 に答える