【发布时间】:2014-07-06 08:00:34
【问题描述】:
我有一个如下查询,它给了我如图所示的结果集
SELECT E1.Name,E1.AccountType ,
STUFF(( SELECT DISTINCT ', ' + CAST(E2.AccountNumber as nvarchar(50))
FROM @temp AS e2
WHERE e1.Name = e2.Name and e1.AccountType = e2.AccountType
FOR XML PATH('')
), 1, 2, '') AS AccountNumber ,
STUFF(( SELECT DISTINCT ', ' + CAST(E2.CustomerNumber as nvarchar(50))
FROM @temp AS e2
WHERE e1.Name = e2.Name and e1.AccountType = e2.AccountType
FOR XML PATH('')
), 1, 2, '') AS CustomerNumber
FROM @temp AS e1
GROUP BY Name,AccountType
现在我想旋转这个结果集,而不是三行,我的结果集只包含一行,对于 C,I,T,每个 AccountNumber,CustomerNumber 三列。
我已经编写了以下查询以使用单个 AccountNumber 列进行透视,并且它对我有用,但我不知道如何在此透视中包含另一列 CustomerNUmber?
这是我为带有结果集图像的单列枢轴编写的查询
SELECT * from
(
SELECT E1.Name,E1.AccountType ,
STUFF(( SELECT DISTINCT ', ' + CAST(E2.AccountNumber as nvarchar(50))
FROM @temp AS e2
WHERE e1.Name = e2.Name and e1.AccountType = e2.AccountType
FOR XML PATH('')
), 1, 2, '') AS AccountNumber
FROM @temp AS e1
GROUP BY Name,AccountType
) as src
PIVOT (MAX(AccountNumber) FOR AccountType IN (C,I,T) )AS pvt
已编辑:
【问题讨论】:
-
您想在同一字段中同时使用 C、I、T 的帐号和客户编号,还是要在同一字段中使用 C、I、T 和单独的 C、I、T 客户?
-
你能用一些示例数据和你的表结构创建一个 SQL Fiddle 吗?
-
@Tristan 是的,你是对的。我的结果表应该是这样的 NAME,Account_I,Account_C,Account_T,Customer_I,Customer_C,Customer_T 并且只有一行。
-
@bluefeet sql fiddle 链接包括。谢谢
标签: sql sql-server sql-server-2008 pivot