我在SQL中有以下数据(nvarchar,nvarchar)
Name: Test Person
Phone Number: 290831283
Fax Number: 192389182
Email Address: test@test.com
Name: Abacus Testing
Phone Number: 901823908
Fax Number: 9213989182
Email Address: abacus@test.com
如何将此数据格式化为:
[Name] [Phone Number] [Fax Number] [Email Address]
Test Person 290831283 192389182 test@test.com
Abacus Testing 901823908 9213989182 abacus@test.com
所以基本上将行设置为匹配列
我希望使用Pivot表,但由于聚合,我只得到第一行。
SELECT [Name], [Phone Number], [Fax Number], [Email Address]
FROM
(
SELECT
ColumnName,
Data
FROM
TheData
) SRC
PIVOT
(
MAX(Data)
FOR ColumnName IN ([Name], [Phone Number], [Fax Number], [Email Address])
) PIV
我不希望使用CURSOR方法,任何替代方案?
其他可用字段是每个条目的标签ID。即Name = 1,PhoneNumber = 2,FaxNumber = 3,EmailAddress = 4
也可以使用4个条目中的每个条目的公共ID。即前4个条目的id为1001,后4个条目的id为1002
答案 0 :(得分:1)
在评论中进行说明后,您只需将CommonId
添加到您的来源。
这不是聚合列或扩展列,因此它将用作分组列,每个不同的值都会得到一行。
SELECT [Name], [Phone Number], [Fax Number], [Email Address]
FROM
(
SELECT
CommonId,
ColumnName,
Data
FROM
TheData
) SRC
PIVOT
(
MAX(Data)
FOR ColumnName IN ([Name], [Phone Number], [Fax Number], [Email Address])
) PIV