-2

次のクエリを使用して、コンマで区切られた問題のリストを表示しています。

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 などのような出力を提供しています


しかし、私の実際の要件は、a
b
c
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(STUFF((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 group by tt.VrNo しかし、上記のクエリを使用した後、カンマではなくスペースで区切られた問題リストを取得します

しかし、それは私が望む出力を与えません。

助けてください..

前もって感謝します

4

1 に答える 1

3

お役に立てる前に、もっと情報が必要だと思います。

親子関係の子レベルの情報をリスト化しようとしていると思います。おそらく、このブログのようなものを Web で見たことがあるでしょう。

ただし、クエリの形式が正しくありません。

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 に設定されている場合、出力ウィンドウにキャリッジ リターンのみが表示されます。

これで問題が解決することを願っています。そうでない場合は、詳細を返信してください!!

ここに画像の説明を入力

于 2013-09-05T12:50:30.693 に答える