В стандартном SQL для больших запросов я получаю сообщение об ошибке:
"Ошибка: столбец 7 содержит функцию агрегирования, которая не разрешена в GROUP BY в [17:22]
где столбец 7 определен в разделе select следующим образом: -
СЛУЧАЙ, КОГДА MIN (transaction_dttm) = transaction_dttm THEN 'NEW' ELSE 'EXISTING' END AS Fcquisition_Flag
Обратите внимание, что transaction_date - это отметка времени.
Любые предлагаемые решения приветствуются.
Я не вижу ничего плохого в вашем выражении CASE. Вы должны опубликовать полный запрос.


Возможно, вам просто нужна оконная функция в подзапросе:
SELECT . . .
FROM (SELECT . . . ,
(CASE WHEN transaction_dttm = MIN(transaction_dttm) OVER (PARTITION BY ?)
THEN 'NEW' ELSE 'EXISTING'
END) AS Fcquisition_Flag
FROM . . .
) t
GROUP BY 1, 2, 3, 4, 5, 6, 7
Непонятно, что вы хотите от PARTITION BY.
Спасибо Гордону и Тиму.
Запрос, который я пытаюсь отправить, выглядит следующим образом:
SELECT DATE (transaction_date) AS trans_date, TRIM (CONCAT (comp_quarter, '', comp_year)) AS comp_year, CASE WHEN partners NOT IN ('Nok') THEN 'Not_Nok' ELSE 'Nok' END AS Partner_Flag, CASE WHEN MIN (transaction_date ) = transaction_dttm THEN 'NEW' ELSE 'EXISTING' END AS Acquisition_Flag, COUNT (DISTINCT sids) AS No_Subs, COUNT (CASE WHEN se = 'P' THEN 1 ELSE 0 END) AS sp_count FROM mytable WHERE prod IN ('SSDPmed') И ДАТА (transaction_dttm) = '2018-07-01' И spf = 1 GROUP BY 1,2,3,4
это упрощенный запрос - без СЛУЧАЯ, КОГДА СОЗДАЕТ ФЛАГ ПРИОБРЕТЕНИЯ, он работает нормально ..... но когда я включаю его, я получаю указанную выше ошибку
Отредактируйте свой вопрос и покажите упрощенную версию вашего запроса вместе с образцами данных и желаемыми результатами.