具有多个列标题的TSQL pivot
我有一个带有动态列标题的sql server pivot查询,其结果如下所示具有多个列标题的TSQL pivot,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个带有动态列标题的sql server pivot查询,其结果如下所示 | DATE | Key1 | Key2 | Key 3 | Key4 | |--------|---------------|---------------|-------------------|-----------| | 1 | 1 | 2 | 3
| DATE | Key1 | Key2 | Key 3 | Key4 |
|--------|---------------|---------------|-------------------|-----------|
| 1 | 1 | 2 | 3 | 4 |
| 2 | 1.29400 | 0.33840 | 0.04270 | (null) |
| 3 | 60.00000 | 70.00000 | 50.00000 | 180.00000 |
我的“键”列标题字段具有子键,因此键1和键2可以具有相同的子键,我希望像下面一样返回我的轴,以便我具有多个列标题:
| DATE | Key1 | Key2 | Key 3 | Key4 |
|--------|---------------|---------------|-------------------|-----------|
| | subkey1 | subkey2 | subkey3 | subKey4|
|--------|---------------|---------------|-------------------|-----------|
| 1 | 1 | 2 | 3 | 4 |
| 2 | 1.29400 | 0.33840 | 0.04270 | (null) |
| 3 | 60.00000 | 70.00000 | 50.00000 | 180.00000 |
我当前的代码简化如下:
DECLARE @cols AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
SELECT key, subkey, value into #temp from table
SELECT @cols = STUFF((SELECT ',' + QUOTENAME([key])
FROM #temp
GROUP BY [Key]
ORDER BY [Key]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT [date], ' + @cols + ' from
(
select [key], [date], value
from #temp
) x
pivot
(
sum(value)
for [key] in (' + @cols + ')
) p
ORDER BY [Date] asc'
execute(@query)
在sql中可以像这样堆叠我的列标题吗?在excel中,这类似于将多个透视字段添加到“Columns”区域中您不能像在excel中那样拥有多个标题,但可以将标题预先连接起来。即
SELECT key+'-'+subkey as key, value into #temp from table
在sql server中,只有一个标头,如果这是为了显示,请在演示模块中执行。您应该选中此项