Tsql SQL Server中多列的透视
我有3个方面:Tsql SQL Server中多列的透视,tsql,sql-server-2012,pivot,Tsql,Sql Server 2012,Pivot,我有3个方面: Melt, HSM, LSM 在某些地区生产的每个订单都有以下数据: Start Date, Finish Date, Weight 我在SQLServer2012(顶部图像)中有一个视图,如何使用tsql创建生成底部图像的轴? 您可以使用条件聚合: SELECT [Order], MAX(CASE WHEN Area = 'Melt' THEN StartDate END) AS Melt_SDate, MAX(CASE WHEN Area = 'Mel
Melt, HSM, LSM
在某些地区生产的每个订单都有以下数据:
Start Date, Finish Date, Weight
我在SQLServer2012
(顶部图像)中有一个视图
,如何使用tsql创建生成底部图像的轴?
您可以使用条件聚合:
SELECT [Order],
MAX(CASE WHEN Area = 'Melt' THEN StartDate END) AS Melt_SDate,
MAX(CASE WHEN Area = 'Melt' THEN FinisthDate END) AS Melt_FDate,
MAX(CASE WHEN Area = 'Melt' THEN Weight END) AS Melt_Weight,
MAX(CASE WHEN Area = 'HSM' THEN StartDate END) AS HSM_SDate,
MAX(CASE WHEN Area = 'HSM' THEN FinisthDa END) AS HSM_FDate,
MAX(CASE WHEN Area = 'HSM' THEN Weight END) AS HSM_Weight,
MAX(CASE WHEN Area = 'LSM' THEN StartDate END) AS LSM_SDate,
MAX(CASE WHEN Area = 'LSM' THEN FinisthDate END) AS LSM_FDate,
MAX(CASE WHEN Area = 'LSM' THEN Weight END) AS LSM_Weight
FROM tab_name
GROUP BY [Order]; -- ORDER is reserved word, you should avoid such identifiers;
为了使它更简洁,您可以使用IIF
:
MAX(CASE WHEN Area = 'Melt' THEN StartDate END) AS Melt_SDate,
<=>
MAX(IIF(Area='Melt',StartDate,NULL)) AS Melt_SDate,
MAX(面积='Melt'然后开始日期结束时的情况)作为Melt\u SDate,
最大值(IIF(面积=熔化),起始日期,空值)为熔化日期,
在性能POV中,这种方式更好,或者使用Pivot
功能?性能应该比Pivot
更好,因为您必须旋转3次才能获得相同的结果