【发布时间】:2019-08-31 15:53:52
【问题描述】:
我正在尝试将行转换为列
这是我的表格记录
记录
SrID ProID Year Qty Months
-------------------------------------
4444 112112 2019 22 THREE
4444 112112 2019 44 FOUR
4444 112112 2019 20 FIVE
2244 112112 2019 17 SIX
5555 112112 2019 16 SEVEN
4444 222111 2019 5 ONE
4444 222111 2019 4 FOUR
4444 222111 2019 55 FIVE
2244 222111 2019 20 SIX
预期结果
SrID ProID One Two Three Four Five Six Seven
----------------------------------------------------------------
4444 112112 null null 22 44 20 null null
2244 112112 null null null null null 17 null
5555 112112 null null null null null null 16
4444 222111 5 null null 4 55 null null
2244 222111 null null null null null 20 null
我尝试如下
SELECT
SrID,ProID,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN
FROM
Records rec
PIVOT
(
MAX(rec.Qty)
FOR Months IN (ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN)
)AS P
但是我以错误的方式得到了结果,比如
SrID ProID One Two Three Four Five Six Seven
----------------------------------------------------------------
4444 112112 null null 22 null null null null
4444 112112 null null null 44 null null null
4444 112112 null null null null 20 null null
可以给我解决它的工作原理。
【问题讨论】:
-
FROM子句中有JOINs吗? -
@MJoy 没有加入。这是直接临时表
-
好吧,您的代码似乎正确,可能是空格问题 - 试试,
SELECT LTRIM(RTRIM(SrID)) SrID ,LTRIM(RTRIM(ProID)) ProID ..... -
@MJoy 还是一样的兄弟
-
请在问题中包含表记录的 DDL 和 DML
标签: sql sql-server pivot