获取最大值的记录并显示该记录中的其他字段
问题描述:
我正试图显示制造过程的重要日期。有10个房间执行相同的过程。每次过程开始时都会分配一个新的循环编号。我想显示每个房间当前(即最大)周期的重要日期。获取最大值的记录并显示该记录中的其他字段
到目前为止,我已经整理了一个查询,它将显示整体最大周期数的重要日期(我的代码在下面),但我想添加一个附加标准,以便查看最大周期数的信息在每个房间
SELECT
[dbo_batch_overview5].[rm],
[dbo_batch_overview5].[cyc],
[dbo_batch_overview5].[bpr],
[dbo_batch_overview5].[plug_date],
[dbo_batch_overview5].[trig_date],
[dbo_batch_overview5].[flush_date],
[dbo_batch_overview5].[harv_date]
FROM dbo_batch_overview5
WHERE ((([dbo_batch_overview5].[cyc])=(SELECT Max([dbo_batch_overview5].[cyc])
FROM [dbo_batch_overview5]
)));
我想我需要添加一个GROUP BY语句来指定,我希望看到在这间客房[RM]字段每个独特的项的最大周期数,这里是我的尝试代码在我认为我需要的声明中包括:
SELECT
[dbo_batch_overview5].[rm],
[dbo_batch_overview5].[cyc],
[dbo_batch_overview5].[bpr],
[dbo_batch_overview5].[plug_date],
[dbo_batch_overview5].[trig_date],
[dbo_batch_overview5].[flush_date],
[dbo_batch_overview5].[harv_date]
FROM dbo_batch_overview5
WHERE ((([dbo_batch_overview5].[cyc])=(SELECT Max([dbo_batch_overview5].[cyc])
FROM [dbo_batch_overview5]
GROUP BY [dbo_batch_overview5].[rm]
)));
当我尝试上面的代码时,出现错误,说我的子查询返回多个值。谁能告诉我我做错了什么?
按照要求,这里是一些示例数据
rm cyc bpr clone_date plug_date trig_date harv_date
1 13 20161031-OP 10/31/2016 11/16/2016 11/22/2016 1/12/2017
1 13 20161101-EV 11/1/2016 11/16/2016 11/22/2016 1/13/2017
1 13 20161031-CG 10/31/2016 11/16/2016 11/22/2016 1/13/2017
1 13 20161101-CB 11/1/2016 11/16/2016 11/22/2016 1/12/2017
1 13 20161031-VO 10/31/2016 11/16/2016 11/22/2016 1/13/2017
1 14 20170104-CG 1/4/2017 1/23/2017 1/28/2017
1 14 20170104-CB 1/4/2017 1/23/2017 1/28/2017
1 14 20170106-AV 1/6/2017 1/23/2017 1/28/2017
1 14 20170106-MN 1/6/2017 1/23/2017 1/28/2017
2 7 20150925-ST 9/25/2015 10/10/2015 10/19/2015 12/16/2015
2 7 20150924-AL 9/24/2015 10/10/2015 10/19/2015 12/16/2015
2 7 20150924-EA 9/24/2015 10/10/2015 10/19/2015 12/21/2015
2 7 20150928-LM 9/28/2015 10/10/2015 10/19/2015 12/22/2015
2 7 20150928-HM 9/28/2015 10/10/2015 10/19/2015 12/19/2015
2 8 20151214-CG 12/14/2015 12/30/2015 1/7/2016 3/14/2016
2 8 20151214-RM 12/14/2015 12/30/2015 1/7/2016 3/15/2016
2 8 20151215-CB 12/15/2015 12/30/2015 1/7/2016 3/8/2016
在上述例子中,我只希望看到与周期14中的房间1和周期8在房间相关联的记录2
答
将像这样的东西解决你的问题?
SELECT
a.[rm],
a.[cyc],
a.[bpr],
a.[plug_date],
a.[trig_date],
a.[flush_date],
a.[harv_date]
FROM dbo_batch_overview5 a
INNER JOIN (SELECT Max([cyc]) AS maxcyc,
rm as rm2
FROM [dbo_batch_overview5]
GROUP BY [rm])c
ON a.rm = c.rm2 AND a.cyc = c.maxcyc
您可以添加一些示例数据吗?您可以使用[dbfiddle](http://dbfiddle.uk/)[创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –
虽然我会建议加入子查询,但这可能是你正在寻找的东西 - ('([(dbo_batch_overview5)。[cyc])(SELECT Max ...''' – Anand
@Mauricio Arias Olave I无法弄清楚如何使用dbfiddle,但是我将示例数据添加到了我的原始问题上面 – DylanHarding