SQL列名称和值

时间:2013-06-10 20:10:27

标签: sql tsql sql-server-2000 pivot

我需要转此表:

RecID   Date        Time        FirstName   LastName
6       5/28/2013   9:50:07 AM  Jenny       Welhberg

进入这个:

Column      Value
RecID       6
Date        5/28/2013
Time        9:50:07 AM
FirstName   Jenny
LastName    Welhberg

我有:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tablename'

select * from tablename where recid=6

另请注意,我正在使用SQL Server 2000来处理此报告。

1 个答案:

答案 0 :(得分:0)

嗯,你可能有问题。列似乎有不同的类型。

让我忽略这一点。我假设他们都有相同的类型。在“2000”你没有unpivot。我认为最快的方法是进行交叉连接:

select cols.colname,
       (case when cols.colname = 'RecId' then RecId
             when cols.colname  = 'Date' then Date
             when cols.colname  = 'Time' then Time
             when cols.colname  = 'FirstName' then FirstName
             when cols.colname  = 'LastName' then LastName
        end) as Value
from t cross join
     (select 'RecID' as colname union all
      select 'Date' union all
      select 'Time' union all
      select 'FirstName' union all
      select 'LastName'
     ) cols

如果原始类型不是字符串,则可能需要转换它们。