取消透视多个列

Posted

技术标签:

【中文标题】取消透视多个列【英文标题】:Unpivot Multiple Columns 【发布时间】:2020-11-09 09:26:57 【问题描述】:

我需要一些帮助来解决这个问题。我有一个类似这样结构的 SQL Server 表。

我需要取消透视文章、金额和价格。 (注意我没有价格 1)

【问题讨论】:

您使用的是哪个 dbms? 我正在使用 SQL Server 我猜我需要这样做,但我不知道如何编写 unpivot 代码.. 这能回答你的问题吗? SQL Unpivot multiple columns Data 【参考方案1】:

使用cross apply:

select v.*
from t cross apply
     (values (t.id, t.article1, t.amount1, NULL),
             (t.id, t.article2, t.amount2, t.price2),
             (t.id, t.article3, t.amount3, t.price3),
             (t.id, t.article4, t.amount4, t.price4)
     ) v(id, article, amount, price)
where v.article is not null;

【讨论】:

以上是关于取消透视多个列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11g:取消透视多个列并包含列名

取消透视到 Oracle 中的多个列

如何取消透视多个列并从任一列中排除值?

将日期列取消透视到 Oracle 中复杂查询的单个列

尝试在 Oracle SQL 中取消透视列时出错

透视取消透视附加列