在SQL Server中将不同的列转换为行

xor*_*wer 2 sql sql-server pivot-table sql-server-2008 sql-server-2012

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

目前的格式如下.

在此输入图像描述

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

在此输入图像描述

因此,不仅需要应用PIVOT,而且我不确定哪种SQL查询语法有助于识别Type.我尝试过使用带有PIVOT的CASE-WHEN,但确实产生了正确的输出.

问候!

Dhr*_*shi 8

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

see working demo

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