[我正在尝试执行UNPIVOT,但是我的一列实际上是两列之间的区别,SSMS不接受将其作为创建未透视字段的值之一。
示例:
UNPIVOT(
Points
for PointType in (
HomeTeamPoints
, (HomeTeamPoints - TotalPoints)
, TotalPoints
) as pnts
如果我注释掉差异字段,这将非常有效,但是一旦输入了该字段,它就会告诉我“((')附近的语法不正确。一旦删除括号,它就会显示“'-'附近的语法不正确”]
谁知道有没有办法做到这一点?
非常感谢
请勿使用unpivot
。使用apply
:
select v.*
from t cross apply
(values ('HomeTeamPoints', HomeTeamPoints),
('Diff', HomeTeamPoints - TotalPoints),
('TotalPoints', TotalPoints)
) v(which, points);
unpivot
是仅做一件事的定制语法。 apply
实现lateral join。这些是非常强大的联接类型,并且是标准的一部分。 [P0]只能作为开始操作。