【问题标题】:SQL Server Query with join and merge two row into single row of recordSQL Server 查询与连接并将两行合并为单行记录
【发布时间】:2019-02-04 03:06:46
【问题描述】:

我有一个这样的示例表

我想以这种方式获得我的查询的最终结果

我不知道如何创建 SQL Server 查询来存档上述结果。你介意指导我如何使它工作吗?

问候,

【问题讨论】:

    标签: sql sql-server join merge


    【解决方案1】:

    假设您最多有两行,您可以使用row_number() 来枚举值和条件聚合(或者,如果您愿意,也可以使用数据透视):

    select m.movementid, m.arrflt, m.depflt,
           sum(case when seqnum = 1 then des else 0 end) as des_1,
           sum(case when seqnum = 1 then cargo else 0 end) as cargo_1,
           sum(case when seqnum = 1 then mail else 0 end) as mail_1,
           sum(case when seqnum = 1 then luggage else 0 end) as luggage_1,
           sum(case when seqnum = 2 then des else 0 end) as des_2,
           sum(case when seqnum = 2 then cargo else 0 end) as cargo_2,
           sum(case when seqnum = 2 then mail else 0 end) as mail_2,
           sum(case when seqnum = 2 then luggage else 0 end) as luggage_2
    from movement m join
         (select md.*,
                 row_number() over (partition by movementid order by movementid) as seqnum
          from movementdetail md
         ) md
         on md.movementid = m.movementid
    group by m.movementid, m.arrflt, m.depflt;
    

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2018-09-19
      • 1970-01-01
      • 2012-04-10
      • 2020-01-15
      • 2021-08-15
      相关资源
      最近更新 更多