【发布时间】:2013-04-24 07:01:22
【问题描述】:
我有这样的查询结果:
Date User1 User2 User3 ....
----------------------------------
1/1/2000 55 78 98 ...
1/1/2001 26 33 56 ...
1/1/2002 88 67 12 ...
列数未知,因为它是透视查询的结果。
我想将列的名称更改为如下所示:
Date User1 (blue) User2 (green) User3(brown)
颜色是我从另一个表中检索到的信息。
我怎样才能做到这一点?
谢谢
编辑:这是查询。
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(C.Name)
from [History]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT [Date],' + @cols +'
from
(
select [Date], Name, Value
from [History]
) x
pivot
(
max(value)
for Name in (' + @cols + ')
) p '
execute(@query)
【问题讨论】:
-
然后显示你的查询给你这个结果。
-
这些值
blue、green、brown从何而来?您想为每个用户名手动编写它们吗?如果是这样,那么手动列出列的名称,而不是动态列出,毕竟您将手动编写颜色的名称。 -
列数未知,因为它是数据透视查询的结果。请向我们展示查询。
标签: sql sql-server-2008 multiple-columns