高分求助,以下语句或查询该如何实现,谢谢
环境:ASP+SQL SERVER2000
SQL视图TEST的结构如下:
季度 / 姓名/ 销量
2011年4季度 /张三/ 100
2012年1季度 /张三/ 100
2012年2季度 /张三/ 100
2012年2季度 /张三/ 50
2012年1季度 /李四/ 50
2012年2季度 /李四/ 70
2012年3季度 /李四/ 60
要想实现的结果,在ASP页面上显示:
假设在ASP页面中将时间设定为2012年2季度,要求得到以下查询:
姓名/ 本季度销量 /本年度销量 / 累计销量
张三/ 150 / 250 / 350
李四/ 70 / 120 / 120
(注:因2013年3季度在2季度之后,数据不纳入统计)
假设在ASP页面中将时间设定为2012年3季度,要求得到以下查询:
姓名/ 本季度销量 /本年度销量 /累计销量
张三/ 150 / 250 / 350
李四/ 70 / 120 / 180
(注:2013年3季度的数据纳入统计)
请问该如何实现,特求助。
asp
sql?server
------解决方案--------------------select 姓名,sum(销量) as 本季度销量,(select sum(销量) from TEST where left(季度,4)='2012' and 姓名=a.姓名) as 本年度销量,(select sum(销量) from TEST where 姓名=a.姓名) as 累计销量
from TEST a where 季度='2012年2季度' group by 姓名
------解决方案--------------------分开来写,先把姓名取出来
1.取出姓名: select distinct 姓名 from test
下名的姓名用1的变量
按季度:select 姓名,sum(销量) from test where 季度=‘2012年2季度’ group by 姓名
按年度:select 姓名,sum(销量) from test where left(季度,4)='2012' group by 姓名
累计:select 姓名,sum(销量) from test
------解决方案--------------------declare @s varchar(20)
set @s = '2012年3季度'
select 姓名, sum(销量) 销量
from test
where
(left(季度, 4) < left(@s, 4))
or
(left(季度, 4) = left(@s, 4) and substring(季度, 6, 1) <= substring(@s, 6, 1))
group by 姓名