SQL: Как я могу объявить переменную внутри производной таблицы? - PullRequest
0 голосов
/ 08 февраля 2012

Я пытаюсь создать список через запятую и использую производную таблицу. Но я не могу объявить переменную в 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, который говорит, Неверный синтаксис.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Ваше требование не имеет смысла, потому что переменная не может быть использована внутри табличной переменной.И если вы хотите использовать его после табличной переменной, это все равно не имеет смысла ... Ожидаете ли вы несколько экземпляров переменной, по одному разу для каждого отдельного значения 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('.', 'nvarchar(max)'),1,1,'')
  FROM dbo.MyTable AS o
  GROUP BY Col1
) AS T8
ON This = That

Однако T8 меня немного пугает.Сколько таблиц уже участвует в этом объединении?

2 голосов
/ 08 февраля 2012

Вы не можете объявить переменную внутри производной таблицы.

Но вы можете объявить это вне утверждения и использовать его так же, как вы это делали в своем примере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...