【问题标题】:Creating CSV string in TSQL [duplicate]在 TSQL 中创建 CSV 字符串 [重复]
【发布时间】:2015-01-22 05:49:33
【问题描述】:

我有一个包含以下值的表:

NAME      Value1       Value2
--------------------------------
N1          1           10
N1          2           11
N2          3           12
N2          4           13
N2          5           14

我想创建以下结果:

NAME      Value1        Value2_CSV
-----------------------------------
N1          1           10,11
N1          2           10,11
N2          3           12,13,14
N2          4           12,13,14
N2          5           12,13,14

有人可以帮忙吗? 提前致谢

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案1】:

    这是聚合字符串连接的一种变体——但没有聚合。

    我会这样写:

    select t.name, t.value1,
           stuff((select ',' + cast(t2.value2 as varchar(8000))
                  from table t2
                  where t2.name = t.name
                  order by t2.value1
                  for xml path ('')
                 ), 1, 1, '') as value2_csv
    from table t;
    

    【讨论】:

      【解决方案2】:

      这个查询会很有帮助。

      DECLARE @Table AS TABLE
      (
          NAME VARCHAR(100),
          Value1 Int,
          Value2 Int
      )
      
      INSERT INTO @Table
      SELECT 'N1', 1 , 10 UNION
      SELECT 'N1', 2 , 11 UNION
      SELECT 'N2', 3 , 12 UNION
      SELECT 'N2', 4 , 13 UNION
      SELECT 'N2', 5 , 14 
      
      
      SELECT NAME, Value1, Value2_CSV = 
          STUFF((SELECT ',' + CAST(B.Value2 as VARCHAR(MAX)) 
                 FROM @Table AS B WHERE B.NAME = A.NAME
                 GROUP BY B.Value2 for XML PATH (''), TYPE)
                  .value('.', 'varchar(max)') ,1,1,'')
      FROm @Table AS A 
      

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2013-06-19
        • 1970-01-01
        • 2014-10-24
        • 2015-05-28
        • 2014-12-23
        • 1970-01-01
        • 2019-02-05
        • 2019-06-02
        相关资源
        最近更新 更多