0

コンマ区切りのリストを作成しようとしていて、派生テーブルを使用しています。しかし、内で変数を宣言できませんLEFT OUTER JOIN...どうすればこれを行うことができますか?

    LEFT OUTER JOIN (

               DECLARE @String AS VARCHAR(MAX) = NULL
               SELECT @String = COALESCE(@String + ', ','') + Name
                 FROM MyTable
               SELECT @String, Col1
                 FROM MyTable
                GROUP BY Col1

    ) AS T8
   ON This = That

Declare間違った構文というキーワードのエラーが表示されます。

ありがとう!

4

2 に答える 2

2

派生テーブル内で変数を宣言することはできません。

ただし、ステートメントの外で宣言して、例で行ったのと同じ方法で使用することができます。

于 2012-02-07T21:25:14.290 に答える
2

変数は実際にはテーブル変数内で使用できないため、要件は意味がありません。また、テーブル変数の後に使用したい場合でも、意味がありません... Col1 の個別の値ごとに、変数の複数のインスタンスが必要ですか? 多分あなたはこれを意味しました:

LEFT OUTER JOIN
(
  SELECT Col1, String = STUFF((
     SELECT ',' + Name
        FROM dbo.MyTable AS i 
        WHERE i.Col1 = o.Col1 
        FOR XML PATH(''), 
        TYPE).value(N'./text()[1]', N'nvarchar(max)'),1,1,'')
  FROM dbo.MyTable AS o
  GROUP BY Col1
) AS T8
ON This = That

ただし、T8 は少し怖いです。この結合にすでに関与しているテーブルはいくつありますか?

于 2012-02-07T21:29:32.887 に答える