Можно ли сделать что-то похожее на следующее в SQL Server 2012?
IF EXISTS (
WITH DATA AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY column ORDER BY Column) AS rn
FROM table )
SELECT *
FROM DATA
WHERE rn = 2 )
BEGIN
...
END
Я попытался использовать этот синтаксис и получил ошибку. Если это невозможно, будет ли использование временной таблицы лучшим способом для этого?
Из BOL - Руководство по созданию и использованию общих табличных выражений , вы не можете. Лучше всего использовать временную таблицу .
—
Кин Шах
Почему нет
—
ypercubeᵀᴹ
IF EXISTS (SELECT * FROM table)
?
@ypercube Приведенный мною пример не является точной копией запроса, с которым я работаю - проверки того, что в таблицах есть строки, будет недостаточно в том, что я пытаюсь сделать. Я думаю, это было бы более точно сказать
—
Уэстон Сэнки
WHERE rn = 2
Тогда вы могли бы также сказать
—
Аарон Бертран
IF EXISTS (SELECT column FROM dbo.table GROUP BY column HAVING COUNT(*)>1)