Sql server 2008 查看以计数列并将值从单行转换为多行

Sql server 2008 查看以计数列并将值从单行转换为多行,sql-server-2008,view,Sql Server 2008,View,在SQL Server 2008中,我有一个表T,我需要创建一个视图,将每行的结果转换为多行。下面是目标视图的一个示例 请帮忙 当前表T EmpID EmpName State City --------------------------------- 1234 aaaa NY NY 6789 bbbb FL Orlando 目标视图: EmpID ColumnName ColumnValue ----------------

在SQL Server 2008中,我有一个表
T
,我需要创建一个视图,将每行的结果转换为多行。下面是目标视图的一个示例

请帮忙

当前表T

EmpID   EmpName State   City
---------------------------------
1234    aaaa     NY     NY
6789    bbbb     FL     Orlando
目标视图:

EmpID   ColumnName      ColumnValue
-----------------------------------
1234    EmpName         aaaa
1234    State           NY
1234    City            NY
6789    EmpName         bbbb
6789    State           FL
6789    City            Orlando
然后,当您实际从该视图中选择时,提供排序:

SELECT t.EmpID, t.ColumnName, t.ColumnValue
FROM yourView t
ORDER BY t.EmpID,
         CASE WHEN t.ColumnName = 'EmpName' THEN 1
              WHEN t.ColumnName = 'State'   THEN 2
              WHEN t.ColumnName = 'City'    THEN 3 END
然后,当您实际从该视图中选择时,提供排序:

SELECT t.EmpID, t.ColumnName, t.ColumnValue
FROM yourView t
ORDER BY t.EmpID,
         CASE WHEN t.ColumnName = 'EmpName' THEN 1
              WHEN t.ColumnName = 'State'   THEN 2
              WHEN t.ColumnName = 'City'    THEN 3 END

我得到错误“ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML”@AHS I updated my answer。通常情况下,视图不能使用排序依据。相反,请在实际选择时提供所需的顺序。I'm get error“ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML”@AHS I updated my answer。通常情况下,视图不能使用排序依据。相反,在实际选择时提供所需的订单。