具有联接的SQL Server查询,并将两行合并为单行记录

时间:2018-08-29 10:45:11

标签: sql sql-server join merge

我有一个像这样的样本表

enter image description here

enter image description here

我想以此方式为查询提供最终结果

enter image description here

我不知道如何创建SQL Server查询以将结果归档。您介意指导我如何使其成功吗?

此致

1 个答案:

答案 0 :(得分:0)

假设您最多有两行,则可以使用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;