DECLARE @cols AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
select @cols = '[1015],[1060],[1261],[1373]'
print @cols
set @query = 'SELECT header, ' + @cols + '
from
(
select product_id, header, value
from
(
select
cast(product_id as varchar(100))product_id ,
cast(product_name as varchar(100)) product_name,
cast(product_price as varchar(100)) product_price,
cast(product_weight as varchar(100))product_weight,
cast((select TOP 1 image_name from tblProductImage where tblProductImage.product_id=tblProduct.product_id) as varchar(100)) ProductImage
from tblProduct
) p
unpivot
(
value
for header in (product_name, product_price, product_weight,ProductImage)
) unp
) x
pivot
(
max(value)
for product_id in (' + @cols + ')
) p '
execute(@query)
上記のクエリを使用しており、次の出力を生成しています
今私の問題は、列名を静的にする必要があることです..現在、それらのうち最大5つの列があるため、最初の列はヘッダーになりますが、これは問題ありません
しかし、列の残りの部分については、 Prodcut1、Product2、Product3、および Product4 のような名前も必要です。製品が 3 つしかない場合は、5 つの列も表示されますが、最後の列ではすべての属性値が null である必要があります