将列显示为行

Posted

技术标签:

【中文标题】将列显示为行【英文标题】:Display Columns To Rows 【发布时间】:2020-08-05 20:46:42 【问题描述】:

我有一张如下所示的表格:

AccountNumber, Warning01, Warning01ExpirationDate, Warning02, Waring02ExpirtionDate, .....
1234, 3,'2017-09-06',0, null
78976, 1,'2015-04-03',2,null

我想显示如下结果:

AccountNumber,Warning,ExpirationDate
1234,2,'2017-09-06'
78976,1,'2015-04-03'
78976,2,null

如果警告为 0 或 null,我想忽略它。

有什么想法吗?

【问题讨论】:

为什么Warning01的值3变成了2? 【参考方案1】:

在 T-SQL 中,只需使用 cross applyvalues() 即可取消透视数据集:

select x.*
from mytable t
cross apply (values 
    (t.accountNumber, t.warning01, t.warning01expirationDate),
    (t.accountNumber, t.warning02, t.warning02expirationDate)
) as x(accountNumber, warning, expirationDate)
where x.warning <> 0

【讨论】:

欢迎@MoeMoney。如果这正确回答了您的问题,请点击复选标志accept it。谢谢。

以上是关于将列显示为行的主要内容,如果未能解决你的问题,请参考以下文章

将列值转换为行值

将列计数转换为行计数的 SQL 查询

oracle 10g如何将列转换为行

将列转换为行并在 Access 中获取复选框的总和

将列转换为行

Postgres 表选择多列并将结果(列)动态转换为行 - 将列转置为行