У меня есть 2 подзапроса
SELECT
SUM(QTY_BOUGHT * PRICE),
SUM(QTY_BOUGHT),
SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
FROM
TABLE_A
WHERE
DAYS_AGED >= 792
и
SELECT
SUM(QTY_BOUGHT * PRICE),
SUM(QTY_BOUGHT),
SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
FROM
TABLE_A
WHERE
DAYS_AGED < 792
Проблема в том, что я хочу объединить их, используя простой оператор case как:
SELECT
CASE
WHEN DAYS_AGED >= 792
THEN SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
WHEN DAYS_AGED < 792
THEN SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
END
FROM
TABLE_A
Я получаю эту ошибку:
Msg 8120, уровень 16, состояние 1, строка 127 Столбец 'TABLE_A.DAYS_AGED' недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
Я могу добавить, я могу объединить их, используя UNION или CTE , это работает
SELECT
SUM(QTY_BOUGHT * PRICE),
SUM(QTY_BOUGHT),
SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
FROM
TABLE_A
WHERE
DAYS_AGED >= 792
UNION
SELECT
SUM(QTY_BOUGHT * PRICE),
SUM(QTY_BOUGHT),
SUM(QTY_BOUGHT * PRICE) / SUM(QTY_BOUGHT)
FROM
TABLE_A
WHERE
DAYS_AGED < 792
Есть ли способ сопоставить эти 2 подзапроса с помощью оператора CASE, есть ли возможность сделать это