尝试创建数据透视表和返回日期值

时间:2017-11-24 17:58:44

标签: sql

尝试在sql中创建一个数据透视表以返回日期值,之前从未这样做,但我遇到了一个墙,只返回'Null'值。是否可以返回日期值?感谢任何帮助!查询如下:

SELECT SYS_ID, JOB_ID, 
[JOB_OPENED] AS A, [JOB_ENDED] AS B, [ROW_CONSTRUCTED] AS C, [SITE_CONSTRUCTED] AS D, [CONTRACT_ASBUILT_COMPLETE] AS E, [FIBER_ASBUILT_COMPLETE] AS F, [COAX_ASBUILT_COMPLETE] AS G, [JOB_RECONCILED] AS H
FROM 
(SELECT COMPLETION_DATE,  DATE_MILESTONE_NAME, SYS_ID, JOB_ID 

FROM EIMS.JOB_MILESTONES_RV) AS RV
PIVOT
(MAX(COMPLETION_DATE)
FOR DATE_MILESTONE_NAME IN ([JOB_OPENED], [JOB_ENDED], [ROW_CONSTRUCTED], [SITE_CONSTRUCTED], [CONTRACT_ASBUILT_COMPLETE], [FIBER_ASBUILT_COMPLETE], [COAX_ASBUILT_COMPLETE], [JOB_RECONCILED])
) AS PivotTable
WHERE JOB_ID > 40000
AND SYS_ID = 8778
ORDER BY JOB_ID

这是当前表: enter image description here

但我希望它看起来像这样:enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个 -

SELECT SYS_ID
      ,JOB_ID
      ,MAX(CASE WHEN DATE_MILESTONE_NAME = 'JOB OPENED' THEN COMPLETION_DATE END) AS "JOB OPENED"
      ,MAX(CASE WHEN DATE_MILESTONE_NAME = 'JOB ENDED' THEN COMPLETION_DATE END) AS "JOB ENDED"
      ,MAX(CASE WHEN DATE_MILESTONE_NAME = 'SITE CONSTRUCTED' THEN COMPLETION_DATE END) AS "SITE CONSTRUCTED"
FROM YOUR_TABLE
GROUP BY SYS_ID
        ,JOB_ID