【发布时间】:2016-05-13 01:10:34
【问题描述】:
我已经阅读了该站点上的许多帖子以及其他有关使用 PIVOT、UNPIVOT、UNION 和 CROSS JOIN 的帖子,但我似乎无法获得我正在寻找的结果。
我的表格如下所示:
EmployeeName Salary Address City State Zip AdditionalDetails
=========================================================================================
Doe, John 400000 111 Jackson Ave Nowhere CA 99999 Reliable
Blow, Joe 300000 222 Johnson St Somewhere ME 00000 Always late
我要展示的是以下内容:
EmployeeName Doe, John
Salary 400000
Address 111 Jackson Ave
City Nowhere
State CA
Zip 99999
AdditionalDetails Reliable
我最接近的是使用 UNPIVOT,如下所示,但是,问题是两列被转置,我需要交换它们,但我不知道该怎么做。
SELECT *
FROM
(
SELECT EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails
FROM EmployeeDetails
WHERE EmployeeDetails.EmployeeID=@EmployeeID
) AS SourceTable
UNPIVOT
(
Value FOR Header IN
(EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails)
) AS UnpivotTable
所以我得到的是:
Value Header
Doe, John EmployeeName
400000 Salary
111 Jackson Ave Address
Nowhere City
CA State
99999 Zip
Reliable AdditionalDetails
如何根据需要显示数据?我首先要说的是,这个查询一次只会返回一个员工记录。我将此数据附加到 CSV 中,并请求以这种方式显示员工记录。
【问题讨论】:
标签: sql sql-server stored-procedures sql-server-2008-r2 unpivot