部門のテーブルがあります。どの部署に何人いるのかを数える必要があります。これは、次の方法で簡単に実行できます。
SELECT DEPT,
COUNT(*) as 'Total'
FROM SR
GROUP BY DEPT;
ここで、以下のように累積カウントも行う必要があります。
実行中の合計をカウントする SQL を見つけましたが、このようなケースはありません。この場合のアドバイスをお願いできますか?
部門のテーブルがあります。どの部署に何人いるのかを数える必要があります。これは、次の方法で簡単に実行できます。
SELECT DEPT,
COUNT(*) as 'Total'
FROM SR
GROUP BY DEPT;
ここで、以下のように累積カウントも行う必要があります。
実行中の合計をカウントする SQL を見つけましたが、このようなケースはありません。この場合のアドバイスをお願いできますか?
これには一時/変数テーブルを使用でき、ここからソリューションを使用できると思います:
declare @Temp table (rn int identity(1, 1) primary key, dept varchar(128), Total int)
insert into @Temp (dept, Total)
select
dept, count(*) as Total
from SR
group by dept
;with cte as (
select T.dept, T.Total, T.Total as Cumulative, T.rn
from @Temp as T
where T.rn = 1
union all
select T.dept, T.Total, T.Total + C.Cumulative as Cumulative, T.rn
from cte as C
inner join @Temp as T on T.rn = C.rn + 1
)
select C.dept, C.Total, C.Cumulative
from cte as C
option (maxrecursion 0)
他にもいくつかの解決策がありますが、SQL Server 2008 ではこれが最速だと思います。