在SQL Server 2012中回车

时间:2013-09-05 11:58:03

标签: sql sql-server tsql sql-server-2012

嘿我使用以下查询来显示以逗号分隔的问题列表。

SELECT tt.VrNo, STUFF((select ','+ Er1.ErrorDesc 
from ( select * from CallRegErrors )as Main 
left join ErrorMaster ER1 on Main.ErrorCode=ER1.ErrorCode
WHERE (main.VrNo = tt.VrNo)
FOR XML PATH('')) ,1,1,'') AS Problemlist

查询给出的输出如a,b,c,d等

但我的实际要求是我想在新行中显示每个错误描述,例如,
一个
b
ç
d

我尝试了以下查询:

SELECT tt.VrNo, STUFF((select char(13)+char(10)+ Er1.ErrorDesc
from ( select * from CallRegErrors )as Main 
left join ErrorMaster ER1 on Main.ErrorCode=ER1.ErrorCode
WHERE (main.VrNo = tt.VrNo)
FOR XML PATH('')) ,1,1,'') AS Problemlist

我也用过

SELECT tt.VrNo,Replace(STOFF((select','+ Er1.ErrorDesc as [text()] from(select * from CallRegErrors)as Main left join ErrorMaster ER1 on Main.ErrorCode = ER1.ErrorCode             WHERE(main.VrNo = tt.VrNo)             FOR XML PATH('')),1,1,''),',',char(13)+ char(10))AS Problemlist             from(select main.VrNo,Er1.ErrorDesc from(select * from CallRegErrors)as main left join ErrorMaster ER1 on Main.ErrorCode = ER1.ErrorCode)as tt             tt.VrNo小组 但现在使用上述查询

后,用空格而不是逗号分隔问题列表

但它没有提供我想要的输出。

请帮助..

提前致谢

1 个答案:

答案 0 :(得分:3)

在我们可以帮助您之前,我认为我们需要更多信息。

我认为您正在尝试将父子关系中子级别的信息格式化为列表。你可能在网上看到了这样的blog

但是,您的查询格式不正确。

ErrorMaster(Production.ProductCategory)是父级,而CallRegErrors(SUB.ProductCategoryID)是子级吗?

如果是这样,只需将查询更改为那些表名字段名称即可使用。

我在整体结果上使用REPLACE函数将COMMAS更改为CR + LF。

-- Sample database
USE AdventureWorks2012
GO

-- Change SQL from www.sqlandme.com for this users problem
SELECT      
    CAT.Name AS [Category],
    REPLACE(STUFF((
        SELECT ',' + SUB.Name AS [text()]                        
        FROM Production.ProductSubcategory SUB
        WHERE SUB.ProductCategoryID = CAT.ProductCategoryID
        FOR XML PATH('') 
        ), 1, 1, '' ), ',', CHAR(13) + CHAR(10))
    AS [Sub Categories]
FROM  Production.ProductCategory CAT

当SSMS中的类型设置为TEXT时,您只能在输出窗口中看到回车。

我希望这能解决你的问题。如果没有,请回复更多信息!!

enter image description here