【问题标题】:query to convert column to row in sql server查询以在sql server中将列转换为行
【发布时间】:2019-05-20 09:41:10
【问题描述】:

需要将此列转换为行

select okeydata
 from [elo].[dbo].[objkeys] 
 where parentid 
 in 
  ( select parentid from
   [elo].[dbo].[objekte] inner join [elo].[dbo].[objkeys] 
   on objid = parentid and objmask like 26 and okeydata like 1 )

实际输出

okeydata  
1
a
a@a.com
london

需要查询

okeydata  
1  a a@a.com london

【问题讨论】:

  • 到目前为止你尝试过什么?什么决定了这些行/列的顺序?有很多关于如何在 Stack Overflow 上透视数据的示例;这些例子有什么问题?
  • 如果您使用的是 SQL Server 2017,请查看 STRING_AGG

标签: sql sql-server database pivot unpivot


【解决方案1】:

如果要四列,可以使用row_number()pivot

select max(case when seqnum = 1 then okeydata end) as col_1,
       max(case when seqnum = 2 then okeydata end) as col_2,
       max(case when seqnum = 3 then okeydata end) as col_3,
       max(case when seqnum = 4 then okeydata end) as col_4
from (select okeydata,
             row_number() over (order by (select null)) as seqnum
      from [elo].[dbo].[objkeys] 
      where parentid in (select parentid
                         from [elo].[dbo].[objekte] inner join
                              [elo].[dbo].[objkeys] 
                               on objid = parentid 
                         where objmask like 26 and okeydata like 1 
                        )
     ) o;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2016-07-29
    • 2020-03-06
    相关资源
    最近更新 更多