tsql - SQL Server 中的多列数据透视
问题描述
我有3个领域:
Melt, HSM, LSM
在某些地区产生的每个订单都有以下数据:
Start Date, Finish Date, Weight
解决方案
您可以使用条件聚合:
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,
推荐阅读
- python - 如何阻止 pytube python 应用程序无响应?
- jquery - 未重新加载页面时无法打开模态框
- google-app-engine - 是否可以在谷歌应用程序引擎标准上运行有状态应用程序
- java - Spring data redis - 如何使用 hashOperation 的 scan 方法根据模式获取键或值?
- javascript - 为什么我的图像没有填满整个画布的宽度?
- angular - Angular:更改结果跟随检查
- javascript - 制作
- python - 我如何修复它返回数组(a,dtype,copy=False,order=order)?在 python sklearn
- c# - 如何生成游戏对象,然后在它们停止时重新生成它们
- spring-boot - 即使在使用 DelegatingSecurityContextAsyncTaskExecutor 之后,Spring 上下文也没有得到更新