【问题标题】:Concatenate Prefix based on ID -TSQL基于 ID 的连接前缀 -TSQL
【发布时间】:2020-10-15 09:57:18
【问题描述】:

我想要的是设法连接所有具有相同 ID 的前缀。

这是我使用的代码:

  CTE_1 (ID,Prefix)AS (SELECT *, STUFF((
            SELECT DISTINCT ', ' + Prefix
            FROM CTE
            WHERE ID = t.ID
            FOR XML PATH('')), 1, 2, '')
FROM (
    SELECT DISTINCT ID
    FROM CTE
) t)

代码工作正常,但是当前缀为空时,它会导入 ,,我想避免它。

有什么想法吗?

SQL 版本:Microsoft SQL Server 2014

【问题讨论】:

  • “空”是什么意思?如果你的意思是NULL,那就不会发生; ', ' + NULL = NULL。如果您的意思是空字符串 (''),请在聚合字符串之前在 WHERE 中过滤掉这些行。
  • 我添加了另一个 where 子句。谢谢拉努。

标签: tsql concatenation for-xml-path


【解决方案1】:

您可以按如下方式修复您的查询:

CTE_1 (ID,Prefix)AS (SELECT *, STUFF((
        SELECT DISTINCT 
             CASE 
                 WHEN Prefix IS NOT NULL AND Prefix <> ''
                 THEN ', ' + Prefix
                 ELSE ''
             END
        FROM CTE
        WHERE ID = t.ID
        FOR XML PATH('')), 1, 2, '')
FROM (
    SELECT DISTINCT ID
    FROM CTE
) t)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2019-12-19
    • 2020-12-14
    相关资源
    最近更新 更多