【问题标题】:MSSQL join row based on same number and orderMSSQL join row 基于相同的编号和顺序
【发布时间】:2017-04-27 01:47:06
【问题描述】:

我是 SQL 查询的新手。我有一个关于当我们有相同的号码并按订单号排序时如何在 MSSQL 中加入行的问题。谢谢

输入:

No      order       Character
===     ======      ============
1       3           A     
1       2           B
1       1           C
2       3           D
2       2           E
2       1           F

输出:

No          Character
=========   ============
1           CBA   
2           FED

【问题讨论】:

  • 在 MySQL 中你会使用 GROUP_CONCAT()group by

标签: php sql join


【解决方案1】:

如果您知道 SQL Server 中的最大顺序,则可以轻松使用条件聚合:

select no,
       ( max(case when [order] = 1 then character else '' end) +
         max(case when [order] = 2 then character else '' end) +
         max(case when [order] = 3 then character else '' end)
       )
from t
group by no;

如果你不这样做,那么你需要 XML 技巧:

select no,
       (select character
        from t
        where t.no = n.no
        for xml path ('')
       ) as output 
from (select distinct no from t) n;

【讨论】:

  • 我只使用了 1 个表,但在您的代码中有 2 个表 "t.no = n.no" 表 t 和表 n。
  • @rizal 。 . . n 是子查询的别名,而不是不同的表。
  • @rizal 应该是 'path' 而不是 'plath'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2021-11-08
  • 2020-10-15
  • 2023-03-02
  • 1970-01-01
相关资源
最近更新 更多