Sql server 将行转换为列-SQL Server

Sql server 将行转换为列-SQL Server,sql-server,Sql Server,我在SQL Server 2014中有下表 <table> <tr><td>ColumnName</td><td>RowOrdinal</td><td>Value</td></tr> <tr><td>EmpName</td><td>0</td><td>John</td></tr>

我在SQL Server 2014中有下表

<table>
    <tr><td>ColumnName</td><td>RowOrdinal</td><td>Value</td></tr>
    <tr><td>EmpName</td><td>0</td><td>John</td></tr>
    <tr><td>EmpTitle</td><td>0</td><td>Engineer</td></tr>
    <tr><td>EmpCity</td><td>0</td><td>Chicago</td></tr>
    <tr><td>EmpName</td><td>1</td><td>Matt</td></tr>
    <tr><td>EmpTitle</td><td>1</td><td>Analyst</td></tr>
    <tr><td>EmpCity</td><td>1</td><td>Boston</td></tr>
</table>

ColumnNameRowOrdinalValue
约翰皇帝
空置工程师
临时芝加哥
EmpName1Matt
空置分析员
波士顿商业区
基本上,我需要将行转换为列(可能使用PIVOT),因此我的输出应该如下所示:

<table>
    <tr><td>RowOrdinal</td><td>EmpName</td><td>EmpTitle</td><td>EmpCity</td></tr>
    <tr><td>0</td><td>John</td><td>Engineer</td><td>Chicago</td></tr>
    <tr><td>1</td><td>Matt</td><td>Analyst</td><td>Boston</td></tr>
</table>

RowOrdinalEmptitLeempCity
0Johnenerginerchicago
波士顿马塔纳酒店

如果可能,请提供SQL以实现此目的。谢谢。

简单的
PIVOT
将为您完成这项工作

SELECT RowOrdinal,
       [EmpName],
       [EmpTitle],
       [EmpCity]
FROM   yourtable
       PIVOT (Max(Value)
             FOR columnname IN([EmpName],
                               [EmpTitle],
                               [EmpCity]))pv 
或使用条件聚合

SELECT RowOrdinal,
       EmpName=Max(CASE WHEN ColumnName = 'EmpName' THEN Value END),
       EmpTitle=Max(CASE WHEN ColumnName = 'EmpTitle' THEN Value END),
       EmpCity=Max(CASE WHEN ColumnName = 'EmpCity' THEN Value END),
FROM   yourtable
GROUP  BY RowOrdinal