найти несколько значений MAX с предложением IN и условием WHERE - PullRequest
0 голосов
/ 11 декабря 2019

Учитывая простую таблицу:

ColumnWhereIn    ColumnWhere    ColumnSearched
A                   1234                1
A                   1234                2
B                   1234                3
B                   1234                4
C                   1234                5
C                   1234                6

Я хотел бы найти наибольшее значение ColumnSearched. Итак, ожидаемый результат:

{A: 2, B: 4, C: 6}

Я попробовал следующий запрос:

SELECT mt.ColumnSearched AS cs, mt.ColumnWhereIn AS cwi FROM MyTable mt
 WHERE (mt.ColumnSearched, mt.ColumnWhereIn) IN
 (SELECT MAX(ColumnSearched), ColumnWhereIn FROM MyTable
 WHERE ColumnWhere = 1234
AND ColumnWhereIn IN ('A', 'B', 'C')
GROUP BY ColumnWhereIn)

Но он не возвращает никаких записей. Очевидно, что я мог бы просто выполнить три выбора, как это:

SELECT MAX(ColumnSearched) FROM MyTable
WHERE ColumnWhere = 1234 AND ColumnWhereIn = 'A'

Но мне было интересно, есть ли более чистое решение.

...