使用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