在 table 中旋转单个字段
Pivoting a single field in a table
我有一个 table 结构如下:
姓名
类型
线
唯一身份
钥匙
值
我需要 select 除 UniqueID 字段之外的所有字段,并向结果集中添加一个键 'UniqueID' 和一个具有 UniqueID 值的值字段。
例如,如果我有三个记录:
Name Type Line UniqueID Key Value
___________________________________________________________________
John Doe Employee 2 test333 SSN 123-45-2345
John Doe Employee 3 test333 Address 555 Rodeo Drive
Jane Doe Visitor 2 test444 SSN 345-67-8907
我的结果集需要是:
Name Type Line Key Value
___________________________________________________
John Doe Employee 2 UniqueID test333
John Doe Employee 2 SSN 123-45-2345
John Doe Emplyee 3 Address 555 Rodeo Drive
Jane Doe Visitor 2 UniqueID test444
Jane Doe Visitor 2 SSN 345-67-8907
我使用枢轴吗?谁能指出我正确的方向?
这是一个奇怪的要求,至少对我来说是这样。但是无论如何,您可以通过几种方式来处理它。一种方法是使用交叉应用:
select
name,
type,
line,
newkey,
newvalue
from
table1
cross apply
( values
('UniqueID',uniqueid),
('SSN',Value),
('Address',Value)
) c
(newkey,newvalue)
根据您的意见,我们将放弃 union all 方法。
这是一个令人难以置信的丑陋和笨拙的 unpivot,结合了一个联合(以获得唯一的 ids):
select
name,
type,
line,
newkey2,
newvalue
from
(select
name,
type,
line,
[key],
[value]
from table1) t1
unpivot
(
newvalue for newkey in ([Value])
) u
unpivot
(newkey2 for newvalue2 in ([key])) u2
union all
select
name,
type,
line,
'UniqueID',
Uniqueid
from
table1
我有一个 table 结构如下:
姓名 类型 线 唯一身份 钥匙 值
我需要 select 除 UniqueID 字段之外的所有字段,并向结果集中添加一个键 'UniqueID' 和一个具有 UniqueID 值的值字段。
例如,如果我有三个记录:
Name Type Line UniqueID Key Value
___________________________________________________________________
John Doe Employee 2 test333 SSN 123-45-2345
John Doe Employee 3 test333 Address 555 Rodeo Drive
Jane Doe Visitor 2 test444 SSN 345-67-8907
我的结果集需要是:
Name Type Line Key Value
___________________________________________________
John Doe Employee 2 UniqueID test333
John Doe Employee 2 SSN 123-45-2345
John Doe Emplyee 3 Address 555 Rodeo Drive
Jane Doe Visitor 2 UniqueID test444
Jane Doe Visitor 2 SSN 345-67-8907
我使用枢轴吗?谁能指出我正确的方向?
这是一个奇怪的要求,至少对我来说是这样。但是无论如何,您可以通过几种方式来处理它。一种方法是使用交叉应用:
select
name,
type,
line,
newkey,
newvalue
from
table1
cross apply
( values
('UniqueID',uniqueid),
('SSN',Value),
('Address',Value)
) c
(newkey,newvalue)
根据您的意见,我们将放弃 union all 方法。
这是一个令人难以置信的丑陋和笨拙的 unpivot,结合了一个联合(以获得唯一的 ids):
select
name,
type,
line,
newkey2,
newvalue
from
(select
name,
type,
line,
[key],
[value]
from table1) t1
unpivot
(
newvalue for newkey in ([Value])
) u
unpivot
(newkey2 for newvalue2 in ([key])) u2
union all
select
name,
type,
line,
'UniqueID',
Uniqueid
from
table1