SQL Server 2008 R2 将一行结果拆分为两行

Posted

技术标签:

【中文标题】SQL Server 2008 R2 将一行结果拆分为两行【英文标题】:SQL Server 2008 R2 split one row of results into two rows 【发布时间】:2020-11-26 01:51:24 【问题描述】:

简单来说,表 (t1) 如下所示:

id     hours    dollars
-----------------------
abc     4         40

我想从如下所示的表格中获取结果:

abcHours      4      0
abcDollars    0      40

谢谢

【问题讨论】:

【参考方案1】:

您可以使用cross apply 取消透视:

select x.*
from mytable t
cross apply (values 
    (concat(id, 'Hours'  ), hours, 0      ), 
    (concat(id, 'Dollars'), 0,     dollars)
) as x(newid, hours, dollars)

【讨论】:

【参考方案2】:

您可以尝试简单的查询,使用运算符 Union:

Select  'abcHours' as  abcHour, hours as Hour, 0 as dollar
Union all
Select  'abcDollars', 0, dollars

【讨论】:

以上是关于SQL Server 2008 R2 将一行结果拆分为两行的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2 - 将查询结果保存为 phpmyadmin 可读的 SQL 语句?

求和然后删除一行 - SQL Server 2008 R2

将 SQL Server 2008 r2 降级到 SQL Server 2008

SQL Server 2008 R2 系统函数学习

如何在 SQL Server 2008 R2 表中添加“上次更新”列?

虚拟机windows server2008r2怎么激活