упростите инструкцию SQL с помощью CTE

У меня есть такой запрос:

SELECT A.a, A.b, B.c,
(CASE WHEN ... THEN ... ELSE ... END) AS CalculatedValue,
B.d
FROM    dbo.TableA A INNER JOIN
        dbo.TableB B ON (...)
WHERE (CASE WHEN ... THEN ... ELSE ... END) BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, (CASE WHEN ... THEN ... ELSE ... END), B.c

, чтобы избежать многократного повторения одного и того же выражения: (CASE WHEN ... THEN ... ELSE ... END) Я хотел определить CTE и запросить такую ​​таблицу, используя в select, where и group по выражению CalculatedValue

, к сожалению, это не работает, потому что select уже должен включать группу автор при создании CTE

, есть ли другой способ, который я мог бы использовать, чтобы не повторять CASE WHEN ... так много раз?

6
задан Davide Piras 8 February 2012 в 17:24
поделиться