我正在使用SQL Server 2012并且不确定是否处理问题的最佳方式。这是我的数据:SQL Server阵列或动态字段标题或数据透视表
Item Size SortOrder Qty
ABC XS 1 0
ABC S 2 8
ABC M 3 4
ABC L 4 3
ZXY 1 1 10
DEF 6 1 5
DEF 8 2 4
DEF 10 3 7
DEF 12 4 6
QWE 1 1 5
不过,我需要出示它在网格格式和大小需要动态改变的标题:
ABC XS S M L
Qty 0 8 4 3
ZXY 1
Qty 10
DEF 6 8 10 12
Qty 5 4 7 6
QWE 1
Qty 5
此外,我需要分配数量,以适当的大小并且尺寸必须始终按排序顺序从左到右显示。
什么将是最好的方法?创建数组还是我可以在枢轴上实现上述?
谢谢。
我尝试使用下面的转动,但保持收到错误“无效列名‘项目’:
DECLARE @SizeColums VARCHAR(MAX)
SELECT @SizeColums = COALESCE(@SizeColums + ',','') + QUOTENAME([Size])
FROM vw_SizeSeq
GROUP BY [Size]
DECLARE @Sql NVARCHAR(MAX) = N'
SELECT Item,
[Types],' +
@SizeColums + '
FROM (SELECT * FROM vw_SizeSeq
) t
UNPIVOT (
[Type]
FOR [Types] IN ([Item])) up
PIVOT (
MAX([Type])
FOR [Size] IN (' + @SizeColums + ')
) p
'
EXEC sp_executesql @sql;
在SQL中,我们只能以表格格式生成结果,但您的预期结果看起来有所不同。尝试应用层为这个 –
他们必须是一种方式枢轴和unpivot – Michael
可能是不理解您的预期结果格式。你能否让它更清晰 –