i有以下结构的表:
名称类型线唯一身份钥匙值
我需要选择除uniquarID字段以外的所有字段,并添加一个键'uniquarId'和一个具有唯一值的值字段。
例如,如果我有三个记录:
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)
SQL小提琴演示
根据您的评论,我们将把工会全部方法。
这是一个令人难以置信的丑陋和kludgy的unvivot,结合了一个联合(获得独特的ID):
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
Unvivot SQL小提琴