qq_40076006
2017-09-14 03:27
采纳率: 50%
浏览 2.6k
已采纳

用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条回答 默认 最新

  • 卓成俊 2017-09-14 07: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 内存表)

    打赏 评论
  • 卓成俊 2017-09-14 04:53

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

    打赏 评论
  • 卓成俊 2017-09-14 04: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

    打赏 评论
  • 卓成俊 2017-09-14 05: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

    打赏 评论
  • 卓成俊 2017-09-14 07:26

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

    insert into @ageRange select * from 表

    打赏 评论

相关推荐 更多相似问题