Выберите максимальное значение на основе другого столбца - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь получить максимальное значение на основе другого столбца.

SELECT DISTINCT 
    AppDetailVehicleValuation.AppID, 
    VehicleValuationOption.Description, 
    MAX (VehicleValuationOptionValueType.Value)
FROM            
    AppDetailVehicleValuation
    INNER JOIN VehicleValuationOption 
        ON AppDetailVehicleValuation.ValuationID = VehicleValuationOption.ValuationID 
    INNER JOIN VehicleValuationOptionValueType 
        ON VehicleValuationOption.ValuationOptionID = VehicleValuationOptionValueType.ValuationOptionID
WHERE        
    (VehicleValuationOption.IsSelected LIKE '1') 
    AND (VehicleValuationOption.IsSystemOption LIKE '1')

Вот что у меня есть

AppID | Description | Value
999     Beats Audio   425.00
999     Beats Audio   475.00
999     Power Str.    600.00
999     Power Str.    750.00

это то, что мне нужно

AppID | Description | Value
999     Beats Audio   475.00
999     Power Str.  | 750.00

Ответы [ 3 ]

1 голос
/ 31 октября 2019

В вашем запросе просто отсутствует предложение GROUP BY:

SELECT
    AppDetailVehicleValuation.AppID, 
    VehicleValuationOption.Description, 
    MAX (VehicleValuationOptionValueType.Value)
FROM            
    AppDetailVehicleValuation
    INNER JOIN VehicleValuationOption 
        ON AppDetailVehicleValuation.ValuationID = VehicleValuationOption.ValuationID 
    INNER JOIN VehicleValuationOptionValueType 
        ON VehicleValuationOption.ValuationOptionID = VehicleValuationOptionValueType.ValuationOptionID
WHERE        
    (VehicleValuationOption.IsSelected LIKE '1') 
    AND (VehicleValuationOption.IsSystemOption LIKE '1')
GROUP BY AppDetailVehicleValuation.AppID, VehicleValuationOption.Description
1 голос
/ 31 октября 2019

Вы можете просто сделать это:

 SELECT
       t.AppId, 
       t.Description, 
       max(t.Value)
 FROM mytable t
 GROUP BY t.description, t.AppId
0 голосов
/ 31 октября 2019

Это слишком долго для комментария.

Рад, что вы нашли ответ, который работает с GROUP BY. Я бы посоветовал вам начать использовать псевдонимы в своих запросах. Он может быстро и легко превратить текстовую стену во что-то довольно легко увидеть, что происходит. Вы можете закончить чем-то вроде этого.

SELECT advv.AppID
    , vvo.Description
    , MaxValue = MAX(vvot.Value)
FROM AppDetailVehicleValuation advv
INNER JOIN VehicleValuationOption vvo ON advv.ValuationID = vvo.ValuationID 
INNER JOIN VehicleValuationOptionValueType vvot ON vvo.ValuationOptionID = vvot.ValuationOptionID
WHERE vvo.IsSelected = '1'
    AND vvo.IsSystemOption = '1'
group by advv.AppID
    , vvo.Description
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...