tsql - Raws into Strings in Columns - 仅当唯一时
问题描述
现在我有另一个问题。如何修改代码以仅使用在整个字符串中唯一的错误代码来获得最终集群字符串,因此第 1 行仅返回一个 B、C、A(跳过第二个 C 和第二个 A)。
问候,
阿雷克
DECLARE @table1 TABLE
(
[Case] INT,
ErrorCode CHAR(1),
[Date] varchar(20)
);
INSERT INTO @table1
VALUES
(1, 'A', '2018-01-25'),
(1, 'B', '2018-01-15'),
(1, 'C', '2018-01-15'),
(1, 'A', '2018-01-15'),
(1, 'C', '2018-01-15'),
(1, 'A', '2018-01-15'),
(2, 'D', '2018-01-26'),
(2, 'A', '2018-01-26'),
(2, 'D', '2018-01-25'),
(2, 'C', '2018-01-24'),
(2, 'C', '2018-01-24');
SELECT *
FROM @table1;
SELECT tabel2.[Case],
tabel2.[Date],
STUFF(
(
SELECT ', ' + ErrorCode
FROM @table1 t1
WHERE t1.[Case] = tabel2.[Case]
AND t1.[Date] = tabel2.[Date]
FOR XML PATH('')
),
1,
1,
''
) AS [ErrorCode]
FROM
(SELECT DISTINCT [Case], [Date] FROM @table1) AS tabel2
ORDER BY tabel2.[Case],
tabel2.[Date];
解决方案
如果我正确理解了这一点,那么在DISTINCT
返回 CSV 的子查询中添加一个就足够了:
STUFF(
(
SELECT ** DISTINCT ** ', ' + ErrorCode --remove **
FROM @table1 t1
WHERE t1.[Case] = tabel2.[Case]
AND t1.[Date] = tabel2.[Date]
FOR XML PATH('')
),
推荐阅读
- php - 在 php 变量中插入带有“if”条件的符号
- untagged - 从 ttag 检索添加的语言环境
- python - Github 测试找不到文件
- javascript - 之后我有两个嵌套循环,有一个重要的promise调用,它按顺序通过服务器,但它没有按顺序调用
- sql - 为什么用户的创建在触发器中不起作用,但在没有触发器的情况下却可以?
- flutter - 颤动中网格视图的动态固定高度
- android - 仅当上次输入是 500 毫秒前,我如何才能发布消息?
- python - Python tkinter 数学游戏
- c++ - 在 doxygen 中如何告诉函数参数应该是确定的定义指令
- http - HTTP 消息头的 RFC 定义是什么?