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 。如果只有三个产品,那么它也会显示五列,但对于最后一列,所有属性值都应该为空