用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,只能找出表中一条最大值,我要找出每台机号的最大值

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 内存表)

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

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

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

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

insert into @ageRange select * from 表