我正在尝试将分组值添加到现有表中。我想将每月和每年所有“工作日”的数量添加为额外列。我在Sub-Select中使用group by语句尝试了它并再次将它连接到同一个表。它在某种程度上有效,但非常耗时。有更聪明的方法吗?
Date Year Quarter Month Week Weekday Descr. Work_Days_Month
01.01.2017 2017 1 1 52 7 Holiday 5
02.01.2017 2017 1 1 1 1 Work Day 5
03.01.2017 2017 1 1 1 2 Work Day 5
04.01.2017 2017 1 1 1 3 Work Day 5
05.01.2017 2017 1 1 1 4 Work Day 5
06.01.2017 2017 1 1 1 5 Work Day 5
07.01.2017 2017 1 1 1 6 Weekend 5
08.01.2017 2017 1 1 1 7 Weekend 5
答案 0 :(得分:2)
您可以使用窗口功能:
select t.*,
sum(case when Description = 'Work Day' then 1 else 0 end) over
(partition by year, month) as yyyymm_workdays
from t;