将具有唯一值的列转置到行的 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 查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL 将多行转置到不同的列

将列转置为行 SQL Server

具有唯一值的列的 SQL 总和量

SQL中Unique约束有啥用啊?

SQL中Unique约束有啥用啊?

我需要从 sql 中选择具有不同值的列