如何获得组的最小值?

问题描述 投票:0回答:2

我需要获取报价的注释,该注释的每个项目的最小lineTotal(PrjCode)。如何获得以下查询我尝试过,但没有成功

  select distinct a.PrjCode,b.LineTotal as 'Neg.rate',(case when min(b.LineTotal) = b.LineTotal then c.Comments end)
from OPRJ a
Left Join PQT1 b on b.Project = a.PrjCode
Inner Join OPQT c on c.DocEntry = b.DocEntry
Group by a.PrjCode,a.PrjName,b.LineTotal,c.Comments
having min(b.LineTotal) = b.LineTotal
Order by a.PrjCode

输出如下

enter image description here

预期输出如下

enter image description here

sql sql-server-2014 minimum
2个回答
0
投票

虽然使用了distinct,但没有可用的示例数据,但您无需使用group by,仅假设以下内容可能对您有用

select  a.PrjCode,b.LineTotal as 'Neg.rate',
min(c.Comments )
from OPRJ a
Left Join PQT1 b on b.Project = a.PrjCode
Inner Join OPQT c on c.DocEntry = b.DocEntry
Group by a.PrjCode,a.PrjName,b.LineTotal    
Order by a.PrjCode

0
投票

尝试此查询

     SELECT c.PrjCode, b.LineTotal AS 'Neg.rate', e.Comments FROM ( 
     (SELECT a.PrjCode, MIN(b.LineTotal) AS LineTotal FROM OPRJ a
     LEFT JOIN PQT1 b ON b.Project = a.PrjCode GROUP BY a.PrjCode)c
     INNER JOIN  PQT1 d ON d.Project = c.PrjCode AND d.LineTotal = c.LineTotal
     INNER JOIN  OPQT e ON e.DocEntry = d.DocEntry ORDER BY c.PrjCode)f;
© www.soinside.com 2019 - 2024. All rights reserved.