sql - Query that returns the sum of accounts specified in another table where accounts to sum or range is defined -
i have table users maintaining, pr. statistical account can define accounts want sum - either specified or range. how can construct view best sums amount pr stat account , month. need somehow pr. account able change clause.
below have 2 tables: dimstataccount , factamount , below expected view

i stole table loads kevin's answer. can use ability select variables create dynamic sql select statement dimstataccount table.
create table dimstataccount (stataccount varchar(255), accounts varchar(255), accountsrange varchar(255)) insert dimstataccount values ('stat1', 'in (1000,1020)', null), ('stat2', 'in (1020,2020)', null), ('stat3', null, 'between 1000 , 1999'), ('stat4', null, 'between 2000 , 2999') create table factamount (account int, [month] varchar(255), amount int) insert factamount values (1000,'jan',500), (1000,'feb',460), (1010,'jan',799), (1010,'jan',855), (1010,'feb',633), (1020,'feb',522), (2000,'jan',436), (2000,'jan',946), (2000,'jan',374), (2010,'jan',683), (2010,'feb',492), (2020,'jan',437), (2020,'feb',834), (2030,'jan',944) declare @sqlstatement nvarchar(max) = ''; select @sqlstatement += concat('select ''',stataccount,''',[month],sum(amount) factamount account ',isnull(accounts,accountsrange),' group [month] union ') dimstataccount ; set @sqlstatement = left(@sqlstatement,len(@sqlstatement)-10); --remove final union exec sp_executesql @sqlstatement;
Comments
Post a Comment