【问题标题】:Make Multile rows to single row based on two columns [duplicate]基于两列将多行变为单行[重复]
【发布时间】:2017-02-07 18:16:26
【问题描述】:

我的问题:

VALUES:      **TABLE A**

ID       Number      Code
ABC99       1         XYZ0
ABC99       1         XyZ1
ABC99       2         XZY2
ABC99       3         XYZ1
ABC99       3         XwZ4
DEF88       5         QPR1
DEF88       5         QPR2
DEF88       6         QPS1

期望的输出:ID 应该与对应的数字和代码连接不同

输出:

ID        Number      Code
ABC99       1         XYZ0,XyZ1
ABC99       2         XZY2
ABC99       3         XYZ1,XwZ4
DEF88       5         QPR1,QPR2
DEF88       6         QPS1

输出:ID 与唯一编号匹配,并将多行(代码)组成以逗号分隔的单行(无论它们有多少)。

【问题讨论】:

标签: sql sql-server sql-server-2008 sql-server-2008-r2 business-intelligence


【解决方案1】:
declare @t table (
    ID varchar(10),
    Number int,
    Code varchar(10)
)

insert into @t values
('ABC99', 1, 'XYZ0'),
('ABC99', 1, 'XyZ1'),
('ABC99', 2, 'XZY2'),
('ABC99', 3, 'XYZ1'),
('ABC99', 3, 'XwZ4'),
('DEF88', 5, 'QPR1'),
('DEF88', 5, 'QPR2'),
('DEF88', 6, 'QPS1');


select
    ID, Number,
    stuff((select ',' + Code from @t b
            where a.ID = b.ID 
            and a.Number = b.Number
            for XML PATH('')
    ),1,1,'') Codes
from @t a
group by ID, Number;

【讨论】:

  • 它工作。谢谢古夫
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 2021-06-04
  • 2015-04-01
  • 2021-01-06
  • 2017-04-05
相关资源
最近更新 更多