Возврат каретки в 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 и т. д.
Но мое фактическое требование - я хочу отобразить описание каждой ошибки в новой строке, например,
б
с
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
а также я использовал
ВЫБЕРИТЕ tt.VrNo, Замените (STUFF((выберите ','+ Er1.ErrorDesc как [текст ()] из (выберите * из CallRegErrors) в качестве основного левого соединения ErrorMaster ER1 на Main.ErrorCode=ER1.ErrorCode WHERE (main.VrNo = tt.VrNo) ДЛЯ ПУТИ XML ('')),1,1,''),',',char(13)+char(10)) Список задач AS из (выберите main.VrNo, Er1.ErrorDesc из (выберите * из CallRegErrors) в качестве основного слева, присоедините ErrorMaster ER1 к Main.ErrorCode=ER1.ErrorCode) в качестве группы tt по tt.VrNo, но теперь получите список проблем, разделенных пробелами вместо запятых после использования вышеуказанного запроса
но это не дает вывод, который я хочу.
пожалуйста помоги..
заранее спасибо
1 ответ
Я думаю, что нам нужно больше информации, прежде чем мы сможем вам помочь.
Я думаю, что вы пытаетесь отформатировать информацию на дочернем уровне в родительских дочерних отношениях в список. Вы, наверное, видели что-то вроде этого блога в Интернете.
Однако ваш запрос отформатирован неправильно.
Является ли 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.
Я надеюсь, что это решит вашу проблему. Если нет, пожалуйста, напишите с дополнительной информацией!