【发布时间】:2021-09-02 12:44:25
【问题描述】:
假设我的表格中有如下所示的数据
Num1 Type1 Type2 Acct Ind
--- ---- ---- --- ---
1X2 XXX CA 111 ERROR
1X2 XXX CA 222 ERROR
X22 XXX CA 111 ERROR
X22 XXX CA 222 ERROR
X22 XXX CA 333 ERROR
X22 XXX CA 444 ERROR
我想要实现的是添加一个新列,最终实现如下:
Num1 Type1 Type2 Acct Ind Acct_List
--- ---- ---- --- --- --------
1X2 XXX CA 111 ERROR 111,222
1X2 XXX CA 222 ERROR 111,222
X22 XXX CA 111 ERROR 111,222,333,444
X22 XXX CA 222 ERROR 111,222,333,444
X22 XXX CA 333 ERROR 111,222,333,444
X22 XXX CA 444 ERROR 111,222,333,444
我试图做这样的事情:
SELECT Num1, Type1, Type2, Acct, Ind, 'Acct_List' = STUFF((SELECT ', ' + CAST(ACCT AS VARCHAR(55)) FROM Table FOR XML PATH (''),1,1,'')
FROM Table
WHERE IND='ERROR'
GROUP BY Num1, Type1, Type2, IND
但是,使用此代码的情况是,每一行都返回 ACCT_LIST 中的所有 ACCT
有什么方法可以让它看起来像结果数据?
【问题讨论】:
-
在提出问题时,您需要提供minimal reproducible example:(1) DDL 和样本数据填充,即 CREATE 表加上 INSERT、T-SQL 语句。 (2) 你需要做什么,即逻辑,以及你在 T-SQL 中尝试实现它。 (3) 基于上述#1 中的样本数据的期望输出。 (4) 你的 SQL Server 版本 (SELECT @@version;)
标签: sql sql-server ssms stuff