如何将sql表从行转换为列

时间:2017-11-03 05:51:23

标签: sql-server sql-server-2012 pivot

我在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。

1 个答案:

答案 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)