SQL MAX () пропускает значения - PullRequest
2 голосов
/ 10 июня 2011

У меня есть таблица с колонкой "версия" Он указывает версию программного обеспечения со строкой «3.2.2.0», например Может иметь и версию "DEBUG"

Я хочу получить значение MAX для столбца, но без DEBUG, Отладка показывается только если это единственное значение

Примеры:

Version
-------
3.2.0
3.2.0
DEBUG
3.2.1
3.2.2

MAX(version) 
result obtained -> DEBUG
result desired -> 3.2.2

Version
-------
DEBUG
DEBUG
DEBUG

MAX(version) 
result -> DEBUG  OK!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

Это касается таблицы только один раз.Это это просто ...

...
CASE
   WHEN MIN(Version) = 'DEBUG' THEN 'DEBUG'
   ELSE MAX(NULLIF(Version, 'DEBUG'))
END AS Version
...

Оригинал, до обновления:

...
MAX(CASE WHEN Version = 'DEBUG' THEN '' ELSE Version END)
...
3 голосов
/ 10 июня 2011
select max(version)
from my_table
where version != 'DEBUG'
union
select max(version)
from my_table
where not exists (select * from my_table where version != 'DEBUG');

Или, если вы используете mysql:

select ifnull(max(version), 'DEBUG')
from my_table
where version != 'DEBUG'

и для postgres:

select coalesce(max(version), 'DEBUG')
from my_table
where version != 'DEBUG'
...