2 qq 40076006 qq_40076006 于 2017.09.14 11:27 提问

用left join, 先sum,再max,如何写语句?

select A.*,b.生产长度 from 表1 A left join(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B on A.机号=B.机号_2 and a.轴号=b.轴号_2

图片说明

用left join, 先sum,再max,如何写语句?在后加where max,只能找出表中一条最大值,我要找出每台机号的最大值

5个回答

u011781616
u011781616   2017.09.14 15:07
已采纳

declare 内存表 -- 定义一个内存表
-- 这个查询结果 保存在内存表中
insert into 内存表
select id from 表A
join
(select MAX(日期) 日期 from 表A) B
on 表A.日期 = B.日期

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

where A.ID in ( select id from 内存表)

u011781616
u011781616   2017.09.14 12:53

不要用left join 直接使用 join 就可以了

u011781616
u011781616   2017.09.14 12:54

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

u011781616
u011781616   2017.09.14 13:08

declare maxDate datetime;-- 定义变量
select MAX(日期) into maxDate from 表2; -- 找出最大日期

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 where 日期 = maxDate group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

qq_40076006
qq_40076006 不对哦,表2没日期
2 个月之前 回复
u011781616
u011781616   2017.09.14 15:26

-- SQLserver 内存表的创建
declare @ageRange table(
lsh int,
mc nvarchar(128),
ageStart int,
ageEnd int
)

insert into @ageRange select * from 表

Csdn user default icon
上传中...
上传图片
插入图片