将具有唯一值的列转置到行的 SQL 查询
Posted
技术标签:
【中文标题】将具有唯一值的列转置到行的 SQL 查询【英文标题】:SQL QUERY TO TRANSPOSE COLUMN WITH UNIQUE VALUES TO ROWS 【发布时间】:2019-12-09 15:20:23 【问题描述】:我对 SQL 编程很陌生,因此发现很难满足下面给出的这个要求
BARCODE MATERIAL SET WEIGHT
112345 PBR1 34
112345 PBR2 34
112346 PBR11 34
112346 PBR21 34
112347 PBR43 34
需要的输出
BARCODE MATERIAL SET WEIGHT MATERIAL SET WEIGHT
112345 PBR1 34 PBR2 34
112346 PBR11 34 PBR21 34
112347 PBR43 34
请帮忙
【问题讨论】:
您好,欢迎来到 SO。请添加一些您迄今为止尝试过的代码以及您想要的处理方式。 *** 并不意味着为您完成所有工作:-) 【参考方案1】:您可以使用row_number()
和条件聚合:
select
barcode,
material,
max(case when rn = 1 then set_weight end) set_weight1,
max(case when rn = 1 then material end) material1,
max(case when rn = 2 then set_weight end) set_weight2,
max(case when rn = 2 then material end) material2
from (
select
t.*,
row_number() over(partition by barcode order by material) rn
from mytable t
) t
【讨论】:
以上是关于将具有唯一值的列转置到行的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章