Я пытаюсь создать функцию для замены большого аргумента case из часто используемой логики во многих хранимых процедурах.Inline UDF в группе по SQL
Основываясь на моих исследованиях, я настроил его как функцию, ориентированную на таблицу Inline.
Мой вопрос: Многие из хранимых процедур, которые я буду заменять, используют Group By, но я не могу сгруппировать по встроенной функции, как я могу скаляр. Как вы группируетесь по встроенной функции? Я думаю, что я пытаюсь сделать это:
SELECT account
, (SELECT Inline FROM fnGroups (id)) AS Buckets
, SUM(Sales) AS Sales
FROM FactTable
GROUP BY
Account
, (SELECT Inline FROM fnGroups (id)) --Not Allowed
Есть много хранимых процедур, которые необходимо это обновление и я пытаюсь сделать эту функцию динамической, насколько это возможно, и избежать незначительного переписывает для каждой хранимой процедуры , Я пробовал скалярную версию, но производительность страдает совсем немного.
Спасибо!
Это отлично работает, спасибо. Я еще не использовал функцию APPLY. Кажется, это самый чистый способ внести эти изменения. Отличная статья. –