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

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

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

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

abcHours      4      0
abcDollars    0      40

谢谢

【问题讨论】:

    标签: sql sql-server sql-server-2008-r2 unpivot


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        相关资源
        最近更新 更多