【问题标题】:FOR XML PATH carriage return for ExcelExcel 的 FOR XML PATH 回车
【发布时间】:2020-01-09 23:59:21
【问题描述】:

我正在寻找 SSMS (SQL Server 2014) 查询的 .csv 输出,该查询将值连接到 Excel 的一个单元格中。下面的代码将分号作为分隔符,但我想在 Excel 中输入回车符,以便每个值在单元格内单独一行。 (现在我用 Excel 手动搜索分号并用 CHAR(10) 替换)。 如何在下面更改此内容以在 Excel 的文本文件中提供带回车符的字符串而不是分号? (我继承了这段代码,所以我无法解释它——我只知道它现在可以工作,但我需要更改它。)


SELECT effworkruleid, 
       REPLACE(Stuff((SELECT ', ' + zonename 
              FROM   _pcr_Zones1 
              WHERE  effworkruleid = T.effworkruleid 
              FOR xml path('')), 1, 1, ''), ',', ';')
FROM   (SELECT DISTINCT effworkruleid 
        FROM   _pcr_Zones1) T 

【问题讨论】:

    标签: excel xml path


    【解决方案1】:

    下面的 SQL 怎么样...

    SQL

    -- DDL and sample data population, start
    DECLARE @tbl TABLE (effworkruleid int, zonename VARCHAR(30));
    INSERT   INTO @tbl (effworkruleid, zonename)
    VALUES (333, 'g')
       ,(333 , 'f')
       ,(333 , 'y')
       ,(222 , 'x')
       ,(222 , 'y')
       ,(222 , 'z')
       ,(111 , 'E')
       ,(111 , 'F')
       ,(444 , 'L');
    -- DDL and sample data population, end
    
    DECLARE @separator CHAR(1) = ','
        , @Lf CHAR(1) = CHAR(10);
    
    SELECT DISTINCT c.effworkruleid
       , REPLACE(
            STUFF((SELECT CONCAT(@separator, CAST(zonename AS VARCHAR(30))) AS [text()]
            FROM @tbl AS O
            WHERE O.effworkruleid = C.effworkruleid 
            ORDER BY effworkruleid, zonename ASC
            FOR XML PATH('')), 1, 1, NULL), @separator, @Lf)
            AS zonename_List
    FROM @tbl AS C;
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多