我在以下结构中有一个名为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
任何人都请帮忙......提前致谢...
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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
中的SQL提示和技巧