首页 > 解决方案 > 在 SQL Server 中将不同的列转换为行

问题描述

我在 SQL Server 中有需要从列转换为行的数据。现在虽然这个问题已经被问了很多,但我仍然面临一些困难,因此我想知道是否有人可以帮助我。

目前格式如下。

在此处输入图像描述

所需且非常有用的表格格式将是;

在此处输入图像描述

因此,不仅需要应用 PIVOT,而且我不确定哪种 SQL 查询语法将有助于识别类型。我曾尝试将 CASE-WHEN 与 PIVOT 一起使用,但这确实会产生正确的输出。

问候!

标签: sqlsql-serversql-server-2008sql-server-2012pivot-table

解决方案


您可以使用如下所示的 CROSS APPLY 查询

see working demo

Select 
ProjectName,
v.*
from t
cross apply 
  (
   values 
    ('Plan',PlanStartDate,PlanEndDate),
    ('Actual',ActualStartDate, ActualEndDate)
  )v(type,StartDate, EndDate)

推荐阅读