0

Rule_X_ListType次の構造で呼び出されるテーブルがあります

Rue_ID  ListType_ID  Value
---------------------------
1       2            319
1       2            400
1       5            8150
1       5            1000
1       3            10211
2       2            400
2       6            10211
3       7            10211
3       3            8051
2       2            319

入力を として与える場合Rule_ID = 1 and ListType_ID = 2、出力は値を持つ文字列として必要です:

319,400

誰でも助けてください...事前に感謝します...

4

3 に答える 3

2

CTE も FOR XML PATH も必要だとは思いません。これは、COALESCE のはるかに単純な方法を使用して実現できます。

DECLARE @List varchar(100)

SELECT 
   @List = COALESCE(@List + ', ', '') + CAST(Value AS varchar(10))
FROM 
   Rule_X_ListType
WHERE 
   Rule_ID = 1 and ListType_ID = 2

SELECT @List
于 2013-01-30T06:18:54.077 に答える
0

これを試して

;WITH CTE AS
(
  SELECT * FROM Rule_X_ListType WHERE Rue_ID = 1 AND ListType_ID = 2
)
SELECT STUFF
(
   (SELECT ',' + A.Value FROM CTE A ORDER BY A.VALUE FOR XML PATH('')),1,1,''
) AS CSVValues
于 2013-01-30T06:12:45.600 に答える
0
SELECT DISTINCT T1.Rule_ID,T1.ListType_ID,STUFF(VAL,1,1,'') AS VALUE
FROM Rule_X_ListType T1
CROSS APPLY (SELECT  ',' + CONVERT(VARCHAR,Value)
             FROM Rule_X_ListType T2
         WHERE T1.Rule_ID =T2.Rule_ID and T1.ListType_ID =T2.ListType_ID
         FOR XML PATH(''))A(VAL)
WHERE T1.Rule_ID = 1 and T1.ListType_ID = 2

http://sqlbay.blogspot.in/の SQL のヒントとコツ

于 2013-01-30T07:18:56.167 に答える