Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sql server将行转换为列_Sql_Sql Server_Pivot - Fatal编程技术网

使用sql server将行转换为列

使用sql server将行转换为列,sql,sql-server,pivot,Sql,Sql Server,Pivot,我的结果中有固定的列和行。我想把行转换成列 我已经检查过了,但在旋转中,我们只能将单个列转换成行 SELECT MoveType, SUM(IsHazardous) AS IsHazardous, SUM(IsReefer) AS IsReefer, SUM (IsOOG) AS IsOOG FROM (SELECT qce.MoveType, (CASE WHEN qce.IsHazardous

我的结果中有固定的列和行。我想把行转换成列

我已经检查过了,但在旋转中,我们只能将单个列转换成行

SELECT   MoveType,
         SUM(IsHazardous) AS IsHazardous,
         SUM(IsReefer) AS IsReefer,
         SUM (IsOOG) AS IsOOG
FROM     (SELECT qce.MoveType,
                 (CASE WHEN qce.IsHazardous='YES' THEN 1 ELSE 0 END) AS IsHazardous,
                 (CASE WHEN qce.IsReefer='YES' THEN 1 ELSE 0 END) AS IsReefer,
                 (CASE WHEN qce.IsOOG='YES' THEN 1 ELSE 0 END) AS IsOOG
          FROM   qbtCallEquipmentExecution AS qcee
            INNER JOIN qbtCallEquipment qce ON
                 qce.ID=qcee.CallEquipmentID
            AND  qce.IsActive=1
          WHERE  qce.CallID=1169
          AND qcee.IsActive=1) AS A
GROUP BY MoveType
如何透视此查询

实际产量:

MoveType                                        IsHazardous IsReefer    IsOOG
-------------------------------------------------- ----------- ----------- ---
DSCR                                               0           0           0
LOAD                                               0           0           0
SHFT                                               0           0           0
预期产出:

MoveType                                         DSCR       LOAD         SHFT
-------------------------------------------------- ----------- ----------- ---
IsHazardous                                        0           0           0
IsReefer                                           0           0           0
IsOOG                                              0           0           0

如果您有已知的MoveType数据列表,则可以使用以下查询。否则,这将是一个动态轴心/取消轴心


嗨,你看过UNPIVOT函数吗?我试过了。它不起作用。
;with t as 
(
    SELECT   MoveType,
         SUM(IsHazardous) AS IsHazardous,
         SUM(IsReefer) AS IsReefer,
         SUM (IsOOG) AS IsOOG
FROM     (SELECT qce.MoveType,
                 (CASE WHEN qce.IsHazardous='YES' THEN 1 ELSE 0 END) AS IsHazardous,
                 (CASE WHEN qce.IsReefer='YES' THEN 1 ELSE 0 END) AS IsReefer,
                 (CASE WHEN qce.IsOOG='YES' THEN 1 ELSE 0 END) AS IsOOG
          FROM   qbtCallEquipmentExecution AS qcee
            INNER JOIN qbtCallEquipment qce ON
                 qce.ID=qcee.CallEquipmentID
            AND  qce.IsActive=1
          WHERE  qce.CallID=1169
          AND qcee.IsActive=1) AS A
GROUP BY MoveType
)

select v as MoveType,DSCR,LOAD,SHFT 
from 
    (
        select * from t

    ) s
unpivot
    (
        data for v in (IsHazardous,IsReefer, IsOOG)
    )u
pivot 
    (
        sum(data) for MoveType in (DSCR,LOAD,SHFT)
    )p