Как получить строку, которая имеет максимальное значение для одного столбца, как в примере ниже - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот запрос:

select * 
from COMMISSION  
where dealer_id in (select dealer_id from DEALER where COM_NAME like 'abcdef')  

Этот запрос возвращает две строки, которые включают столбец STATUS_ID со значениями 100, 102. Я хочу получить строку, которая имеет STA_ID = 102. Как я могу это сделать? Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018
select top 1 id
from Commission
where dealer_id in (select dealer_id from DEALER where COM_NAME like 'abcdef')
order by Status_ID desc
0 голосов
/ 02 ноября 2018

Можете ли вы попробовать это

select * from COMMISSION  
where dealer_id in (select dealer_id from DEALER where COM_NAME like 'abcdef') 
And STA_ID in(
select max(STA_ID) from COMMISSION  
where dealer_id in (select dealer_id from DEALER where COM_NAME like 'abcdef'))
0 голосов
/ 02 ноября 2018

Вы можете использовать агрегацию max () и коррелированный подзапрос

select * from COMMISSION a 
where dealer_id in 
(select max(STATUS_ID) from DEALER b where a.dealer_id=b.dealer_id and 
       COM_NAME like '%abcdef%') 

ИЛИ Вы можете попробовать ниже, используя внутреннее объединение и агрегацию Max ()

Поскольку ваш столбец состояния находится в таблице комиссионных - вы можете попробовать запрос ниже

select a.commisionid,max(STATUS_ID) 
from COMMISSION a inner join DEALER b on a.dealer_id=b.dealer_id
where COM_NAME like '%abcdef%'
group by a.commisionid
...