关于SQL聚合函数,把两个表的数据聚合起来的问题!
我这里有两个表,
表1: 收费表
字段:小区 楼座 单元 房间 费用名称 费用金额
数据:A区 1 1 101 物业费1 100
A区 1 1 102 物业费2 200
表2: 费用表
字段:费用名称 单价 费用归类
数据: 物业费1 1 物业费
物业费2 2 物业费
我想查:物业费一共收了多少钱?
[解决办法]
不知道,你具体是个什么算法,以下两种内容,自己选择一个.
create table 收费表(小区 varchar(10),楼座 int,单元 int,房间 int,费用名称 varchar(10),费用金额 int)insert into 收费表 values('A区', 1, 1 ,101 ,'物业费1', 100)insert into 收费表 values('A区', 1, 1 ,102 ,'物业费2', 200)create table 费用表(费用名称 varchar(10),单价 int,费用归类 varchar(10))insert into 费用表 values('物业费1', 1 ,'物业费')insert into 费用表 values('物业费2', 2 ,'物业费')goselect sum(m.费用金额 * n.单价) 物业费 from 收费表 m , 费用表 n where m.费用名称 = n.费用名称/*物业费 ----------- 500(所影响的行数为 1 行)*/select sum(物业费) 物业费 from( select 费用金额 物业费 from 收费表 where 费用名称 like '%物业费%' union all select 单价 物业费 from 费用表 where 费用名称 like '%物业费%') t/*物业费 ----------- 303(所影响的行数为 1 行)*/drop table 收费表,费用表
[解决办法]
--> 测试数据:[收费表]if object_id('[收费表]') is not null drop table [收费表]create table [收费表]([小区] varchar(3),[楼座] int,[单元] int,[房间] int,[费用名称] varchar(7),[费用金额] int)insert [收费表]select 'A区',1,1,101,'物业费1',100 union allselect 'A区',1,1,102,'物业费2',200--> 测试数据:[费用表]if object_id('[费用表]') is not nulldrop table [费用表]create table [费用表]([费用名称] varchar(7),[单价] int,[费用归类] varchar(6))insert [费用表]select '物业费1',1,'物业费' union allselect '物业费2',2,'物业费'select 费用归类,SUM([费用金额]) [费用金额] from(select a.*,b.费用归类 from [收费表] ainner join [费用表] b on a.费用名称=b.费用名称)dwhere 费用归类='物业费'group by 费用归类/*费用归类 费用金额物业费 300*/