【问题标题】:How to have DISTINCT csv in a column A grouped by column B如何在由 B 列分组的 A 列中具有 DISTINCT csv
【发布时间】:2015-12-04 20:30:36
【问题描述】:

这是我在表 T1 中的示例数据

CREATE TABLE T1 (TRANS_ID INT , SCENARIO VARCHAR(50))
INSERT INTO T1 VALUES (1,'DA_HRNM'),(1,'DA_HRNM'),(2,'DA_KW'),(2,'DA_HRC'),(3,'DA_BOG'),(3,'DA_HRC'),(3,'DA_HRC')

我想写一个查询来返回以下输出 -

基本上我想要DISTINCT col SCENARIO GROUP BY TRANS_ID 中的逗号分隔值

【问题讨论】:

标签: sql sql-server sql-server-2008 csv group-by


【解决方案1】:

你需要distinctfor xml path

sql fiddle demo

WITH onlyone as (
      SELECT DISTINCT TRANS_ID, SCENARIO
      FROM T1 T
)    
SELECT  DISTINCT p.TRANS_ID, 
        STUFF(( SELECT ',' + CAST(T.SCENARIO as varchar(10) )
                FROM onlyone T
                WHERE T.TRANS_ID = p.TRANS_ID
                ORDER BY T.SCENARIO
                FOR
                   XML PATH('')
                ), 1, 1, '') AS SCENARIO
FROM onlyone p

【讨论】:

  • 您的查询在第一行和最后一行为我提供了重复的 csv。预期的输出是获得不同的 csv 值。
  • 立即尝试。我添加了一个 cte 来删除重复的
  • 谢谢@Juan!这正是我想要的!
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
相关资源
最近更新 更多