查询求和?
有张数据库表
商品名称 大类 数量 单价 总价 日期
数码相机 数码类 2 2500 5000 2007-02-01
U盘 配件类 3 200 600 2007-01-01
数码相机 数码类 1 2600 2600 2007-02-02
数码复印机 数码类 1 9000 9000 2007-02-02
U盘 配件类 2 200 400 2007-02-03
我要查询商品名称日期小于2007-02-05里最大日期的总价之和,并按大类列出,效果如下:
数码类 11600
配件类 400
------解决方案--------------------Select 大类,总价和=sum(总价)
from 表 as t where not exists(
Select * from 表 where 大类=t.大类 and 日期> t.日期)
------解决方案--------------------create table 表(商品名称 varchar(100), 大类 varchar(100), 数量 int, 单价 int, 总价 int, 日期 datetime)
insert 表 select '数码相机 ', '数码类 ', 2, 2500, 5000, '2007-02-01 '
union all select 'U盘 ', '配件类 ', 3, 200, 600, '2007-01-01 '
union all select '数码相机 ', '数码类 ', 1, 2600, 2600, '2007-02-02 '
union all select '数码复印机 ', '数码类 ', 1, 9000, 9000, '2007-02-02 '
union all select 'U盘 ', '配件类 ', 2, 200, 400, '2007-02-03 '
select * from 表
-- select 大类,总量
-- from
-- (
-- select 大类,商品名称 ,max(总价) as 总量 from 表
-- group by 大类,商品名称
-- having max(日期) < '2007-02-05 '
-- ) as x
select
大类,
总和=sum(总价)
from
表 a
where
not exists(select * from 表 where 大类=a.大类 and 日期> a.日期)
group by
大类
having
max(日期) < '2007-02-05 '
drop table 表
/*
大类 总和
----------------
配件类 400
数码类 11600
*/
------解决方案--------------------create table Shopping
(
商品名称 nvarchar(255) null ,
大类 nvarchar(255) null ,
数量 int null,
单价 int null,
总价 as 数量*单价,
日期 datetime
)
go
insert into Shopping(商品名称,大类,数量,单价,日期)
select '数码相机 ', '数码类 ',2,2