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没日期
10 个月之前 回复
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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
sql中left join后用on还是where
背景博主开始实习工作后的第一个任务是做一个报表,要求从数据库中拉出指定字段以表格的形式显示。首先吐槽下这变态的sql语句,在学校学习时,,从来没有写过这么变态的sql语句。。。。感叹读万卷书不如行万里路啊,实践出真知。工作中使用了left join,并且在on和where这出了问题。这里重新实验学习一下。实验首先我们建立2个测试用表:table1和table2,如图table1: table2:
join 和 where的执行顺序
引言:今天一同学问我,join后面跟where查询条件,查询的时候是先关联再筛选的还是先各自筛选了再关联的?开始也就凭感觉,应该是先关联再筛选吧!他问了问为什么呢?后来我也越想越纠结了,于是找了两个表试了试,终于得出结论...   看sql:   A表:       id  name        1   aa        2   bb      B表:         id
mysql sum join 多表统计求和时不正确的问题
我在做订单统计的时候遇到问题,就是多表求和时发现不正确 我有下面两个表 -- -- 表的结构 `mobile_shops_orders` -- CREATE TABLE IF NOT EXISTS `mobile_shops_orders` ( `oid` varchar(80) NOT NULL, `userid` int(10) NOT NUL
SQL中left outer join与inner join 混用时,SQL Server自动优化执行计划
以下为示例代码:  set statistics profile off DECLARE @t TABLE(id1 INT,c VARCHAR(10)) INSERT INTO @t VALUES(1,'ab') INSERT INTO @t VALUES(2,'abc') INSERT INTO @t VALUES(3,'abcd') INSERT INTO @t VALUE
join连接表时是先join还是先where
转载地址:转载地址 left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join:外连接,返回两个表中的行:left join + right join。 cross join:结果
SQL改写, 聚合语句, left join 改写标量子查询
最近遇到一个SQL 改写, 其实改写难度一般,但连续强调用 left  join  改写标量子查询,   不知道为何 如此多的标量子查询 案例 说明: 为了公司机密, 所以用scott 用户表示   select d.*, (select count(*) from scott.emp) cnt1,      (select count(*) from scott.emp p
mysql left join on 与 where 筛选的差异
mysql left join   on 与 where 筛选的差异 准备两张表: a表: id a 1 a1 2 a2 3 a3 b表: id b 1 b1 2 b2 1.没有条件 SELECT * FROM a LEFT JOIN b ON a.id = b.id; -------------
Sql语句用left join解决多表关联问题(关联套关联,例子和源码)
Sql语句用left join解决多表关联问题(关联套关联,例子和源码)一看就明白多表关联如何写SQl语句
left join加上where条件的困惑
left join加上where条件的困惑
SQL LEFT JOIN WHERE 的执行顺序
USE [Test] GO --创建表-- CREATE TABLE ClassDemo ( ClassID UNIQUEIDENTIFIER PRIMARY KEY, ClassName NVARCHAR(200) ) CREATE TABLE StudentDemo ( StudentID UNIQUEIDENTIFIER PRIMARY KEY, StudentName NVARCH