SQL根据不同的字段

时间:2017-05-30 15:49:54

标签: sql sql-server

我有这个表(为了清楚起见,列和记录被截断):

StartHour WorkstationName
--------- ---------------
4         Wigets1
19        Wigets2

我希望得到一个1记录的结果,只有StartHour这两行的值,所以我的结果将是

Wigets1   Wigets2
--------- ---------
4         19

我现在有这个问题:

SELECT Wigets1, Wigets2
FROM (SELECT * FROM InspectorApp 
WHERE WorkstationName IN ('Wigets1', 'Wigets2')) innerselect 
PIVOT(MAX(StartHour) FOR WorkstationName IN ([Wigets1], [Wigets2])) pvt

但是我得到了

的结果
EarlyPipe LgLnStart
--------- ---------
NULL      19
4         NULL

如何在这里摆脱NULL

1 个答案:

答案 0 :(得分:2)

pivot很挑剔。只需在子查询中选择所需的列:

SELECT Wigets1, Wigets2
FROM (SELECT WorkstationName, StartHour
      FROM InspectorApp 
      WHERE WorkstationName IN ('Wigets1', 'Wigets2')
     ) innerselect 
PIVOT(MAX(StartHour) FOR WorkstationName IN ([Wigets1], [Wigets2])) pvt;

PS。我更喜欢使用条件聚合进行旋转的另一个原因。