我在mssql中有这样的表:
LogID | BatchID | Type
240 | abc-def | Error
241 | axc-d4f | Success
等等。
我想将此表格转换为:
如果我能为所有非常好的行执行此操作,否则我很乐意使用logid过滤表(从myTable m中选择*,其中m.LogId = 240)
RowId | LogID | ColName | ColValue
1 | 240 | LogID | 240
2 | 240 | BatchID | abc-def
3 | 240 | Type | Error
我读过有关PIVOT的内容,但无法弄清楚如何在这种情况下使用它。 如果可能的话,我对任何其他解决方案都很满意。
谢谢, Hakoo。
答案 0 :(得分:2)
一种方法是使用Apply .. DEMO HERE
select
row_number() over
(partition by logid order by logid) as rownum,
logid,col1,col2 from #t t
cross apply
(
values
('logid',cast(logid as varchar(30))),
('batchid',batchid),
('typee',typee)
)b(col1,col2)