0

我正在尝试选择前 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,'')

)

消息 156,级别 15,状态 1,第 3 行
关键字“SELECT”附近的语法不正确。
消息 102,级别 15,状态 1,第 10 行
')' 附近的语法不正确。

我使用这篇文章作为参考,但它对我不起作用:以逗号分隔在一列中显示前 3 条记录

这个不知道怎么写。

4

1 回答 1

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
于 2013-02-06T22:10:42.753 回答