select U.un as 单位名称 , sum(O.OH) as 油耗数 from U inner join C on U.U#=C.U# inner join O on O.C#=C.C# group by 单位名称
1.U(U#,UN) U#,UN分别代表单位号、单位名称; 2.C(C#,U#,CN)C#,U#,CN分别代表车号,单位号,车辆名称; 3.O(C#,OH)C#,OH分别代表车号,油耗数。 select U.UN,O.OH from U join C on U.U#=C.U# join O on C.C#=O.C# group by U.U#
declare @U table([单位号] varchar(10),[单位名称] varchar(20)) declare @C table([车号] int,[单位号] varchar(10),[车辆名称] varchar(20)) declare @O table([车号] int,[油耗数] int)insert @U select '001','北京顺大贸易' union select '002','天津国顺二厂' union select '003','北京东方红汽车厂'insert @C select 1,'001','奔驰1' union select 2,'002','奔驰2' union select 3,'001','奔驰3'insert @O select 1,1000 union select 2,3000 union select 2,2000select U.*,[耗油数]=isnull(sum(O.[油耗数]),0) from @U U left join @C C on U.[单位号]=C.[单位号] left join @O O on C.[车号]=O.[车号] group by U.[单位号],U.[单位名称]--结果 /* 单位号 单位名称 耗油数 ---------- -------------------- ----------- 003 北京东方红汽车厂 0 001 北京顺大贸易 1000 002 天津国顺二厂 5000 */
Select u.单位名称,u.单位号,sum(u.油号数)From u,c,o Where u.单位号=c.单位号 And c.车号=o.车号 group By U.单位名称,U.单位号
inner join O on O.C#=C.C#
group by 单位名称
2.C(C#,U#,CN)C#,U#,CN分别代表车号,单位号,车辆名称;
3.O(C#,OH)C#,OH分别代表车号,油耗数。
select U.UN,O.OH
from U join C on U.U#=C.U# join O on C.C#=O.C#
group by U.U#
declare @C table([车号] int,[单位号] varchar(10),[车辆名称] varchar(20))
declare @O table([车号] int,[油耗数] int)insert @U
select '001','北京顺大贸易' union
select '002','天津国顺二厂' union
select '003','北京东方红汽车厂'insert @C
select 1,'001','奔驰1' union
select 2,'002','奔驰2' union
select 3,'001','奔驰3'insert @O
select 1,1000 union select 2,3000 union select 2,2000select U.*,[耗油数]=isnull(sum(O.[油耗数]),0)
from @U U left join @C C on U.[单位号]=C.[单位号]
left join @O O on C.[车号]=O.[车号]
group by U.[单位号],U.[单位名称]--结果
/*
单位号 单位名称 耗油数
---------- -------------------- -----------
003 北京东方红汽车厂 0
001 北京顺大贸易 1000
002 天津国顺二厂 5000
*/
Where u.单位号=c.单位号 And c.车号=o.车号 group By U.单位名称,U.单位号