Как получить минимальное значение группы? - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужно получить Комментарий цитаты, который имеет минимальное значение 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

Ответы [ 3 ]

0 голосов
/ 27 сентября 2019

Попробуйте этот запрос

     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;
0 голосов
/ 27 сентября 2019

Попробуйте это

select  a.PrjCode,b.LineTotal as 'Neg.rate', 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
Order by b.LineTotal, a.PrjCode
0 голосов
/ 27 сентября 2019

Вам не нужно использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...