我正在尝试选择前2条记录并将它们放在一个以逗号分隔的列中。
这是我到目前为止所做的,但我无法让它发挥作用。
UPDATE #Temp
SET TopTwoInactiveDDSRenewalFeeID = ( STUFF (
SELECT TOP 2 ',' + I.InvoiceID
FROM DB..rInvoice I
WHERE I.rUltimateEntityID = entID
AND I.ObjectID = 18
AND I.ObjectTypeIDRAW = 1741
AND I.rParentObjectID = 2
AND I.rParentPK = LicID
FOR XML PATH ('')),1,2,'')
)
Msg 156,Level 15,State 1,Line 3
关键字'SELECT'附近的语法不正确。
Msg 102,Level 15,State 1,Line 10
')'附近的语法不正确。
我使用这篇文章作为参考,但它对我不起作用:display the top 3 records in a comma separated in one column
不知道怎么写这个。
答案 0 :(得分:1)
我会尝试更改以下行。逗号后面的空格是STUFF正常工作所必需的。如果你可以将测试数据加载到sqlfiddle http://sqlfiddle.com/中会更好。
SELECT TOP 2 ',' + I.InvoiceID
到
SELECT TOP 2 ', ' + I.InvoiceID
这是你的另一个例子,
IF OBJECT_ID('TempDB..#Values') IS NOT NULL
BEGIN
DROP TABLE #Values
END
IF OBJECT_ID('TempDB..#Temp') IS NOT NULL
BEGIN
DROP TABLE #Temp
END
CREATE TABLE #Temp
(
ID INT
,CommaDelimited VARCHAR(500)
)
INSERT INTO #Temp
(
ID
)
SELECT 1
CREATE TABLE #Values
(
Value CHAR(1)
)
INSERT INTO #Values
(
Value
)
SELECT '1'
UNION ALL SELECT '2'
UNION ALL SELECT '3'
UNION ALL SELECT '4'
UPDATE #Temp
SET CommaDelimited = STUFF((SELECT TOP 2 ', '+Value FROM #Values FOR XML PATH('')),1,2,'')
SELECT * FROM #Temp