SQL Server: объедините несколько операторов SELECT с частью «WITH» в UNION

У меня есть несколько операторов вот так (с использованием оператора WITH):

WITH valDiff AS (SELECT <ComplexClause1> AS v1 FROM [MyTable] WHERE <OtherClause1>) SELECT SUM(CASE WHEN v1 < @MaxVal THEN v1 ELSE @MaxVal END) FROM valDiff

UNION

WITH valDiff AS (SELECT <ComplexClauseN> AS v1 FROM [MyTable] WHERE <OtherClauseN>) SELECT SUM(CASE WHEN v1 < @MaxVal THEN v1 ELSE @MaxVal END) FROM valDiff

Мне нужно объединить их в объединение, чтобы результат возвращался «одним махом». Эти операторы работают нормально сами по себе, но если я добавлю между ними слово «UNION», как я показал выше, я получаю следующую ошибку:

Неверный синтаксис рядом с ключевым словом UNION.
Неправильный синтаксис рядом с ключевым словом with.
Если этот оператор является общим табличным выражением, предложение xmlnamespaces или предложение контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой. "

Что я делаю не так?

5
задан gbn 13 July 2011 в 21:30
поделиться