2017-04-26 52 views
0

最大的组值我有一个表,表中包含OperationDateLotIDNewStatusIDopeTypeId如何获得由SQL

我想告诉OperationDate(TOP1)为每个批次。

我的查询是这样的:

 select a.OperationDate,a.LotID 
    FROM [dbo].[MMwLotOperations] a 
    where a.LotID in ('L705816008','L704511001') 
    GROUP by a.LotID,a.OperationDate 
having a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status' 

该查询返回以下数据:

enter image description here

L705816008很多的NewStatusID返回1个数据

L704511001很多的NewStatusID返回2个数据

现在我想显示每个地段最大的OperationDate。 这个怎么办?

请问您能帮我吗?

谢谢。

+0

大多数人在这里想格式化文本,而不是图像。 – jarlh

回答

3

你可以使用MAX得到最大的日期和Group By

select MAX(a.OperationDate),a.LotID 
FROM [dbo].[MMwLotOperations] a 
where a.LotID in ('L705816008','L704511001') 
     AND a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status' 
GROUP by a.LotID 

注意删除a.OperationDateHaving指定组或聚合的搜索条件。 在你的情况,把a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status'where条件

0
select * from 
( select a.OperationDate,a.LotID,ROW_NUMBER() OVER(partition by a.LotID ORDER BY a.OperationDate desc) as rn 
    FROM [dbo].[MMwLotOperations] a 
    where a.LotID in ('L705816008','L704511001') 
    GROUP by a.LotID,a.OperationDate 
having a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status') where rn =1 
0
select MAX(a.OperationDate) as max_date,a.LotID 
    FROM [dbo].[MMwLotOperations] a 
    where a.LotID in ('L705816008','L704511001') 
    GROUP by a.LotID,a.OperationDate 
having a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status' 

试试这个说法得到最大日

0

使用不同的关键字来选择a.LotID

select a.OperationDate,distinct(a.LotID) 
FROM [dbo].[MMwLotOperations] a 
where a.LotID in ('L705816008','L704511001') 
GROUP by a.LotID,a.OperationDate 
having a.NewStatusID ='Assigned' AND a.opeTypeId = 'Status' 

我希望这会为工作你