[英]How to convert Row to Column using Pivot?
我正在尝试将行转换为列
这是我的表记录
记录
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
可以给我解决方案。
一切对我来说看起来都很不错:
CREATE TABLE [dbo].[myTable](
SrID[numeric](10),
ProID[numeric](10),
Year[numeric](10),
Qty[numeric](10),
Months[varchar](20) NULL)
INSERT INTO [myTable] VALUES
(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')
--select * from [myTable]
SELECT
SrID,ProID,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN
FROM [dbo].[myTable] rec
PIVOT
(
MAX(rec.Qty)
FOR Months IN (ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN)
)AS P
order by 2,1
/*
Result:
SrID ProID ONE TWO THREE FOUR FIVE SIX SEVEN
2244 112112 NULL NULL NULL NULL NULL 17 NULL
4444 112112 NULL NULL 22 44 20 NULL NULL
5555 112112 NULL NULL NULL NULL NULL NULL 16
2244 222111 NULL NULL NULL NULL NULL 20 NULL
4444 222111 5 NULL NULL 4 55 NULL NULL
*/
您能看到表格/数据/查询有什么不同吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.