Как сгруппировать несколько оконных функций в одну и вызывать по псевдониму, где это необходимо в запросе? - PullRequest
2 голосов
/ 30 апреля 2019

Как я могу решить проблему наличия одной и той же оконной функции несколько раз в одном запросе SQL для разных агрегатов?Есть ли способ, которым я могу использовать псевдоним и вызывать его несколько раз, как это необходимо в запросе.

Я пытался использовать предложение «Window» для того же, но SQL Server в настоящее время не поддерживает предложение «Window».

select empid, qty, 
       sum(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_sum, 
       avg(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_avg, 
       min(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_min, 
       max(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_max
from employee

Есть ли способ убрать избыточность в коде?

1 Ответ

1 голос
/ 30 апреля 2019

Не в SQL Server, ANSI SQL поддерживает предложение WINDOWS для определения окон, которые можно использовать повторно.Однако SQL Server не поддерживает его.

Я думаю, вы можете немного упростить свою логику:

select empid, qty, 
       sum(qty) over (partition by empid order by month) as running_sum, 
       avg(qty) over (partition by empid order by month) as running_avg, 
       min(qty) over (partition by empid order by month) as running_min, 
       max(qty) over (partition by empid order by month) as running_max
from employee;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...