将分组值添加到同一个表中

时间:2017-07-26 12:31:42

标签: sql sql-server join group-by

我正在尝试将分组值添加到现有表中。我想将每月和每年所有“工作日”的数量添加为额外列。我在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

1 个答案:

答案 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;