嘿我使用以下查询来显示以逗号分隔的问题列表。
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小组 但现在使用上述查询
后,用空格而不是逗号分隔问题列表但它没有提供我想要的输出。
请帮助..
提前致谢
答案 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时,您只能在输出窗口中看到回车。
我希望这能解决你的问题。如果没有,请回复更多信息!!