0

上位 2 つのレコードを選択して、コンマで区切った 1 つの列に入れようとしています。

これが私がこれまでに持っているものですが、動作させることができません。

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 つのレコードをカンマで 1 つの列に区切って表示します

これの書き方がわからない。

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 に答える