Возврат каретки в 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.

Я надеюсь, что это решит вашу проблему. Если нет, пожалуйста, напишите с дополнительной информацией!

введите описание изображения здесь

Другие вопросы по тегам