create function aaa(@riqi datetime,@dianming nvarchar,@chanpinming nvarchar) returns int as begin declare @i int set @i=0 select @i=@i+1 from 表 where 日期=@riqi and 超市名称=@dianming end return @i+1 select sum(单价*数量),sum(产品名称),aaa(日期,超市名称,产品名称)as 排名 from 表 group by 日期,超市名称,产品名称
--先不管排名:create table test(日期 datetime,商超名称 varchar(10),分店名称 varchar(10),产品名称 varchar(10),数量 int,单价 money) insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('八年 '), 2,76 insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('五年 '), 1,35 insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('老白干'),10,4.3 insert into test select '2006-11-10','北京华联','盐市口店',rtrim('甲级 '),30,29.8 go declare @sql varchar(8000) set @sql='' select @sql=@sql+','+rtrim(产品名称)+'销量=sum(case 产品名称 when '''+rtrim(产品名称)+''' then 数量 else 0 end)' +','+rtrim(产品名称)+'金额=sum(case 产品名称 when '''+rtrim(产品名称)+''' then 数量*单价 else 0 end)' from (select distinct 产品名称 from test) tset @sql='select 商超名称,分店名称' +',本日销量=sum(case datediff(day,日期,getdate()) when 0 then t.数量 else 0 end)' +',累计销量=sum(数量)' +@sql +' from test t group by 商超名称,分店名称'exec(@sql) go drop table test go
if object_id('pubs..TT') is not null drop table TT gocreate table TT(日期 datetime,商超名称 varchar(10),分店名称 varchar(10),产品名称 varchar(10),数量 int,单价 decimal(18,2))insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '八年', 2, 76) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '五年', 1, 35) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '老白干', 10, 4.3) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10', '好又多', '中天店', '老白干', 10, 4.3) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '北京华联', '盐市口店', '甲级', 30, 29.8) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10', '北京华联', '盐市口店', '甲级', 30, 29.8)--累计销量 if object_id('pubs..ta') is not null drop table ta go select 商超名称 , 分店名称 , sum(数量) as 累计销量 into ta from TT group by 商超名称 , 分店名称--本日销量 if object_id('pubs..tb') is not null drop table tb go select 商超名称 , 分店名称 , sum(数量) as 本日销量 into tb from tt where convert(varchar(10),日期,120) = '2006-11-09' group by 商超名称 , 分店名称--利用函数实现行列转换 declare @sql varchar(8000) set @sql = '' select @sql = @sql + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量 else 0 end) [' + 产品名称 + '销量' + ']' + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量*单价 else 0 end) [' + 产品名称 + '金额' + ']' from (select distinct 产品名称 from tt where convert(varchar(10),日期,120) = '2006-11-09') as a set @sql = 'select a1.商超名称 , a1.分店名称 , a2.本日销量 , a1.累计销量 , a2.本日销量排名 , a1.累计销量排名 , a3.* from ' + '( select a.* , 累计销量排名 = (SELECT COUNT(累计销量) FROM ta WHERE 累计销量 > a.累计销量) + 1 from ta a ) a1, ' + ' ( select b.* , 本日销量排名 = (SELECT COUNT(本日销量) FROM tb WHERE 本日销量 > b.本日销量) + 1 from tb b ) a2, ' + ' ( select 商超名称 , 分店名称' + @sql + ' from tt group by 商超名称 , 分店名称 ) a3 where a1.商超名称 = a2.商超名称 and a1.商超名称 = a3.商超名称 and a1.分店名称 = a2.分店名称 and a1.分店名称 = a3.分店名称' exec(@sql) 商超名称 分店名称 本日销量 累计销量 本日销量排名 累计销量排名 八年销量 八年金额 甲级销量 甲级金额 老白干销量 老白干金额 五年销量 五年金额 -------- -------- -------- -------- ------------ ------------ -------- -------- -------- -------- ---------- ---------- -------- -------- 北京华联 盐市口店 30 60 1 1 0 .00 60 1788.00 0 .00 0 .00 好又多 中天店 13 23 2 2 2 152.00 0 .00 20 86.00 1 35.00
--这两行数据是我加的。 insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','好又多','中天店','老白干',10,4.3) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','北京华联','盐市口店','甲级',30,29.8)--以下为全部代码if object_id('pubs..TT') is not null drop table TT gocreate table TT(日期 datetime,商超名称 varchar(10),分店名称 varchar(10),产品名称 varchar(10),数量 int,单价 decimal(18,2))insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','八年',2,76) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','五年',1,35) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','老白干',10,4.3) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','北京华联','盐市口店','甲级',30,29.8) --这两行数据是我加的。 insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','好又多','中天店','老白干',10,4.3) insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','北京华联','盐市口店','甲级',30,29.8) go--累计销量 if object_id('pubs..ta') is not null drop table ta go select 商超名称 , 分店名称 , sum(数量) as 累计销量 into ta from TT group by 商超名称 , 分店名称--本日销量 if object_id('pubs..tb') is not null drop table tb go select 商超名称 , 分店名称 , sum(数量) as 本日销量 into tb from tt where convert(varchar(10),日期,120) = '2006-11-09' group by 商超名称 , 分店名称--利用函数实现行列转换 declare @sql varchar(8000) set @sql = '' select @sql = @sql + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量 else 0 end) [' + 产品名称 + '销量' + ']' + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量*单价 else 0 end) [' + 产品名称 + '金额' + ']' from (select distinct 产品名称 from tt where convert(varchar(10),日期,120) = '2006-11-09') as a set @sql = 'select a1.商超名称 , a1.分店名称 , a2.本日销量 , a1.累计销量 , a2.本日销量排名 , a1.累计销量排名 , a3.* from ' + '( select a.* , 累计销量排名 = (SELECT COUNT(累计销量) FROM ta WHERE 累计销量 > a.累计销量) + 1 from ta a ) a1, ' + ' ( select b.* , 本日销量排名 = (SELECT COUNT(本日销量) FROM tb WHERE 本日销量 > b.本日销量) + 1 from tb b ) a2, ' + ' ( select 商超名称 , 分店名称' + @sql + ' from tt group by 商超名称 , 分店名称 ) a3 where a1.商超名称 = a2.商超名称 and a1.商超名称 = a3.商超名称 and a1.分店名称 = a2.分店名称 and a1.分店名称 = a3.分店名称' exec(@sql) 商超名称 分店名称 本日销量 累计销量 本日销量排名 累计销量排名 八年销量 八年金额 甲级销量 甲级金额 老白干销量 老白干金额 五年销量 五年金额 -------- -------- -------- -------- ------------ ------------ -------- -------- -------- -------- ---------- ---------- -------- -------- 北京华联 盐市口店 30 60 1 1 0 .00 60 1788.00 0 .00 0 .00 好又多 中天店 13 23 2 2 2 152.00 0 .00 20 86.00 1 35.00
select * from t declare @sql varchar(8000) declare @sql1 varchar(8000) set @sql='' select @sql=@sql+', sum(case 产品名称 when '''+a.产品名称+''' then 数量 else 0 end) as ['+a.产品名称+']' from (select distinct 产品名称 from t where 日期='2006-11-09') a set @sql= 'select 分店名称 '+@sql+ ' from t group by 分店名称'set @sql='select bb.*,aa.* from ('+@sql+') aa'set @sql1= 'select c.*, 排名=(select count(*)+1 from (select 分店名称,sum(数量) as 本日销售,sum(数量) as 累计销售 from t b group by 分店名称 ) b where b.本日销售>c.本日销售) from (select 分店名称,sum(数量) as 本日销售,sum(数量) as 累计销售 from t b group by 分店名称 ) c' set @sql=@sql+' ,( '+@sql1+') bb where aa.分店名称=bb.分店名称'exec(@sql)------------------------------------------------------------------- 盐市口店 30 30 1 0 0 0 中天店 13 13 2 2 10 1
--建立測試環境 /*Fname:商超名稱 Cname:分店名稱 Fname:產品名稱*/ GO create table t(rq datetime,Fname varchar(50),Cname varchar(50),Pname varchar(50),num int,value numeric(9,2)) insert into T select '2006-11-08','好又多','中天','十年',100,2 union all --加條上期 select '2006-11-09','好又多','中天','八年',2,76 union all select '2006-11-09','好又多','中天','五年',1,35 union all select '2006-11-09','好又多','中天','白干',10,4.3 union allselect '2006-11-08','北京','岩口','九級',5,5 union all --加條上期 select '2006-11-09','北京','岩口','甲級',30,29.8 union all select '2006-11-10','北京','岩口','乙級',10,10 --加條下期(不計算)GOdeclare @date datetime set @date='2006-11-09' --設置查詢截止時間--求和,丟到temp_t1 select rq,Fname,Cname,[本期]=sum(num), [上期]=(select sum(num) from T a where a.rq<=T.rq and a.Fname=T.Fname and a.Cname=T.Cname ) into temp_t1 from T where rq=@date group by rq,Fname,Cname--行轉列,丟到temp_t2 declare @sql varchar(8000) set @sql='' select @sql=@sql+',sum(case when Pname='''+Pname+''' then num else 0 end) as ['+Pname+'], sum(case when Pname='''+Pname+''' then num*value else 0 end) as ['+Pname+'金額]' from T group by Pname set @sql='select rq,Fname,Cname'+@sql+' into temp_t2 from T where rq='''+convert(varchar(10),@date,120)+''' group by rq,Fname,Cname' exec (@sql)--把動態行轉列的欄位名抓出來 declare @col varchar(8000) set @col='' select @col=@col+','+[name] from syscolumns where object_id('temp_t2')=id and [name] not in('rq','Fname','Cname') order by colid--將temp_t1和temp_t2合併 exec( 'select t1.rq as [查詢日期],t1.Fname as [商超],t1.Cname as [分店],[本期], [上期], [本期排名]=(select count(*) from temp_t1 a where a.[本期]>=t1.[本期]), [上期排名]=(select count(*) from temp_t1 a where a.[上期]>=t1.[上期])'+@col+ ' from temp_t1 t1 inner join temp_t2 t2 on t1.rq=t2.rq and t1.Fname=t2.Fname and t1.Cname=t2.Cname')--刪除測試環境 drop table T, temp_t1,temp_t2GO 查詢日期 商超 分店 本期 上期 本期排名 上期排名 乙級 乙級金額 九級 九級金額 八年 八年金額 十年 十年金額 五年 五年金額 甲級 甲級金額 白干 白干金額 ----------------------------------------------------------------------------------------- 2006-11-09 好又多 中天 13 113 2 1 0 .00 0 .00 2 152.00 0 .00 1 35.00 0 .00 10 43.00 2006-11-09 北京 岩口 30 35 1 2 0 .00 0 .00 0 .00 0 .00 0 .00 30 894.00 0 .00
returns int
as
begin
declare @i int
set @i=0
select @i=@i+1 from 表 where 日期=@riqi and 超市名称=@dianming
end
return @i+1
select sum(单价*数量),sum(产品名称),aaa(日期,超市名称,产品名称)as 排名 from 表 group by 日期,超市名称,产品名称
insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('八年 '), 2,76
insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('五年 '), 1,35
insert into test select '2006-11-09','好又多 ','中天店 ',rtrim('老白干'),10,4.3
insert into test select '2006-11-10','北京华联','盐市口店',rtrim('甲级 '),30,29.8
go
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+','+rtrim(产品名称)+'销量=sum(case 产品名称 when '''+rtrim(产品名称)+''' then 数量 else 0 end)'
+','+rtrim(产品名称)+'金额=sum(case 产品名称 when '''+rtrim(产品名称)+''' then 数量*单价 else 0 end)'
from (select distinct 产品名称 from test) tset @sql='select 商超名称,分店名称'
+',本日销量=sum(case datediff(day,日期,getdate()) when 0 then t.数量 else 0 end)'
+',累计销量=sum(数量)'
+@sql
+' from test t group by 商超名称,分店名称'exec(@sql)
go
drop table test
go
drop table TT
gocreate table TT(日期 datetime,商超名称 varchar(10),分店名称 varchar(10),产品名称 varchar(10),数量 int,单价 decimal(18,2))insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '八年', 2, 76)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '五年', 1, 35)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '好又多', '中天店', '老白干', 10, 4.3)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10', '好又多', '中天店', '老白干', 10, 4.3)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09', '北京华联', '盐市口店', '甲级', 30, 29.8)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10', '北京华联', '盐市口店', '甲级', 30, 29.8)--累计销量
if object_id('pubs..ta') is not null
drop table ta
go
select 商超名称 , 分店名称 , sum(数量) as 累计销量 into ta from TT group by 商超名称 , 分店名称--本日销量
if object_id('pubs..tb') is not null
drop table tb
go
select 商超名称 , 分店名称 , sum(数量) as 本日销量 into tb from tt where convert(varchar(10),日期,120) = '2006-11-09' group by 商超名称 , 分店名称--利用函数实现行列转换
declare @sql varchar(8000)
set @sql = ''
select @sql = @sql + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量 else 0 end) [' + 产品名称 + '销量' + ']'
+ ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量*单价 else 0 end) [' + 产品名称 + '金额' + ']'
from (select distinct 产品名称 from tt where convert(varchar(10),日期,120) = '2006-11-09') as a
set @sql = 'select a1.商超名称 , a1.分店名称 , a2.本日销量 , a1.累计销量 , a2.本日销量排名 , a1.累计销量排名 , a3.* from ' +
'(
select a.* , 累计销量排名 = (SELECT COUNT(累计销量) FROM ta WHERE 累计销量 > a.累计销量) + 1 from
ta a
) a1,
' +
'
(
select b.* , 本日销量排名 = (SELECT COUNT(本日销量) FROM tb WHERE 本日销量 > b.本日销量) + 1 from
tb b
) a2,
' +
'
(
select 商超名称 , 分店名称' + @sql + ' from tt group by 商超名称 , 分店名称
) a3
where a1.商超名称 = a2.商超名称 and a1.商超名称 = a3.商超名称 and
a1.分店名称 = a2.分店名称 and a1.分店名称 = a3.分店名称'
exec(@sql)
商超名称 分店名称 本日销量 累计销量 本日销量排名 累计销量排名 八年销量 八年金额 甲级销量 甲级金额 老白干销量 老白干金额 五年销量 五年金额
-------- -------- -------- -------- ------------ ------------ -------- -------- -------- -------- ---------- ---------- -------- --------
北京华联 盐市口店 30 60 1 1 0 .00 60 1788.00 0 .00 0 .00
好又多 中天店 13 23 2 2 2 152.00 0 .00 20 86.00 1 35.00
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','好又多','中天店','老白干',10,4.3)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','北京华联','盐市口店','甲级',30,29.8)--以下为全部代码if object_id('pubs..TT') is not null
drop table TT
gocreate table TT(日期 datetime,商超名称 varchar(10),分店名称 varchar(10),产品名称 varchar(10),数量 int,单价 decimal(18,2))insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','八年',2,76)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','五年',1,35)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','好又多','中天店','老白干',10,4.3)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','北京华联','盐市口店','甲级',30,29.8)
--这两行数据是我加的。
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-10','好又多','中天店','老白干',10,4.3)
insert into TT(日期,商超名称,分店名称,产品名称,数量,单价) values('2006-11-09','北京华联','盐市口店','甲级',30,29.8)
go--累计销量
if object_id('pubs..ta') is not null
drop table ta
go
select 商超名称 , 分店名称 , sum(数量) as 累计销量 into ta from TT group by 商超名称 , 分店名称--本日销量
if object_id('pubs..tb') is not null
drop table tb
go
select 商超名称 , 分店名称 , sum(数量) as 本日销量 into tb from tt where convert(varchar(10),日期,120) = '2006-11-09' group by 商超名称 , 分店名称--利用函数实现行列转换
declare @sql varchar(8000)
set @sql = ''
select @sql = @sql + ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量 else 0 end) [' + 产品名称 + '销量' + ']'
+ ' , sum(case 产品名称 when ''' + 产品名称 + ''' then 数量*单价 else 0 end) [' + 产品名称 + '金额' + ']'
from (select distinct 产品名称 from tt where convert(varchar(10),日期,120) = '2006-11-09') as a
set @sql = 'select a1.商超名称 , a1.分店名称 , a2.本日销量 , a1.累计销量 , a2.本日销量排名 , a1.累计销量排名 , a3.* from ' +
'(
select a.* , 累计销量排名 = (SELECT COUNT(累计销量) FROM ta WHERE 累计销量 > a.累计销量) + 1 from
ta a
) a1,
' +
'
(
select b.* , 本日销量排名 = (SELECT COUNT(本日销量) FROM tb WHERE 本日销量 > b.本日销量) + 1 from
tb b
) a2,
' +
'
(
select 商超名称 , 分店名称' + @sql + ' from tt group by 商超名称 , 分店名称
) a3
where a1.商超名称 = a2.商超名称 and a1.商超名称 = a3.商超名称 and
a1.分店名称 = a2.分店名称 and a1.分店名称 = a3.分店名称'
exec(@sql) 商超名称 分店名称 本日销量 累计销量 本日销量排名 累计销量排名 八年销量 八年金额 甲级销量 甲级金额 老白干销量 老白干金额 五年销量 五年金额
-------- -------- -------- -------- ------------ ------------ -------- -------- -------- -------- ---------- ---------- -------- --------
北京华联 盐市口店 30 60 1 1 0 .00 60 1788.00 0 .00 0 .00
好又多 中天店 13 23 2 2 2 152.00 0 .00 20 86.00 1 35.00
declare @sql varchar(8000)
declare @sql1 varchar(8000)
set @sql=''
select @sql=@sql+', sum(case 产品名称 when '''+a.产品名称+''' then 数量 else 0 end) as ['+a.产品名称+']' from (select distinct 产品名称 from t where 日期='2006-11-09') a
set @sql= 'select 分店名称 '+@sql+ ' from t group by 分店名称'set @sql='select bb.*,aa.* from ('+@sql+') aa'set @sql1=
'select c.*,
排名=(select count(*)+1 from (select 分店名称,sum(数量) as 本日销售,sum(数量) as 累计销售 from t b group by 分店名称 ) b where b.本日销售>c.本日销售)
from (select 分店名称,sum(数量) as 本日销售,sum(数量) as 累计销售 from t b group by 分店名称 ) c'
set @sql=@sql+' ,( '+@sql1+') bb where aa.分店名称=bb.分店名称'exec(@sql)-------------------------------------------------------------------
盐市口店 30 30 1 0 0 0
中天店 13 13 2 2 10 1
/*Fname:商超名稱
Cname:分店名稱
Fname:產品名稱*/
GO
create table t(rq datetime,Fname varchar(50),Cname varchar(50),Pname varchar(50),num int,value numeric(9,2))
insert into T
select '2006-11-08','好又多','中天','十年',100,2 union all --加條上期
select '2006-11-09','好又多','中天','八年',2,76 union all
select '2006-11-09','好又多','中天','五年',1,35 union all
select '2006-11-09','好又多','中天','白干',10,4.3 union allselect '2006-11-08','北京','岩口','九級',5,5 union all --加條上期
select '2006-11-09','北京','岩口','甲級',30,29.8 union all
select '2006-11-10','北京','岩口','乙級',10,10 --加條下期(不計算)GOdeclare @date datetime
set @date='2006-11-09' --設置查詢截止時間--求和,丟到temp_t1
select rq,Fname,Cname,[本期]=sum(num),
[上期]=(select sum(num) from T a where a.rq<=T.rq and a.Fname=T.Fname and a.Cname=T.Cname )
into temp_t1
from T
where rq=@date
group by rq,Fname,Cname--行轉列,丟到temp_t2
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when Pname='''+Pname+''' then num else 0 end) as ['+Pname+'],
sum(case when Pname='''+Pname+''' then num*value else 0 end) as ['+Pname+'金額]'
from T
group by Pname
set @sql='select rq,Fname,Cname'+@sql+' into temp_t2 from T where rq='''+convert(varchar(10),@date,120)+''' group by rq,Fname,Cname'
exec (@sql)--把動態行轉列的欄位名抓出來
declare @col varchar(8000)
set @col=''
select @col=@col+','+[name] from syscolumns where object_id('temp_t2')=id
and [name] not in('rq','Fname','Cname')
order by colid--將temp_t1和temp_t2合併
exec( 'select t1.rq as [查詢日期],t1.Fname as [商超],t1.Cname as [分店],[本期], [上期],
[本期排名]=(select count(*) from temp_t1 a where a.[本期]>=t1.[本期]),
[上期排名]=(select count(*) from temp_t1 a where a.[上期]>=t1.[上期])'+@col+
' from temp_t1 t1 inner join temp_t2 t2 on t1.rq=t2.rq and t1.Fname=t2.Fname and t1.Cname=t2.Cname')--刪除測試環境
drop table T, temp_t1,temp_t2GO
查詢日期 商超 分店 本期 上期 本期排名 上期排名 乙級 乙級金額 九級 九級金額 八年 八年金額 十年 十年金額 五年 五年金額 甲級 甲級金額 白干 白干金額
-----------------------------------------------------------------------------------------
2006-11-09 好又多 中天 13 113 2 1 0 .00 0 .00 2 152.00 0 .00 1 35.00 0 .00 10 43.00
2006-11-09 北京 岩口 30 35 1 2 0 .00 0 .00 0 .00 0 .00 0 .00 30 894.00 0 .00
另外:如果把上述结果按商超名称分类合计,最后一个总计(排名除外).
在总计行下面再显示上期总计数..以作比较.麻烦了...
然後加rollup就可以了
比如你先前的統計,(記為#t)
商超 分店 本日销量 累计销量 本日排行 累计排行 产品一销量 产品一金额 ...
----------------------------------------------------------------------------------
好又多 中天 22 314 7 14 15 80 ...
好又多 武侯 125 122 15 30 2 70
家乐福 光华 125 12548 22 1 225 33574
家乐福 双桥 112 11554 2245 235 33 125--
select 商超,分店,sum(本日销量),sum(累计销量)
from #t
group by 商超,分店 with rollup
可以根據syscolumns來串