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 回答