Скажем, у меня есть следующая таблица:
CREATE TABLE numbers
(
key integer NOT NULL DEFAULT 0,
number1 integer NOT NULL DEFAULT 0,
number2 integer NOT NULL DEFAULT 0,
number3 integer NOT NULL DEFAULT 0,
number4 integer NOT NULL DEFAULT 0,
CONSTRAINT pk PRIMARY KEY (key),
CONSTRAINT nonzero CHECK (key <> 0)
)
Я хочу получить минимальное значение из заданного ключа всех 4 чисел, но игнорируя те, которые равны нулю.
Я начал с чего-то вроде этого, когда решил, что у меня будут проблемы с нулями:
SELECT LEAST(number1, number2, number3, number4) FROM numbers WHERE key = 1
Например, если у меня есть кортеж (1, 5, 0, 3, 2)
, я хочу вернуть 2
, или для (2, 3, 0, 0, 0)
я хочу вернуть 3
и так далее.
Можно ли это сделать в одном запросе (или, возможно, вложенном), я действительно не хочу писать процедуру для этого.
key
в его примерах. - person Erwin Brandstetter   schedule 10.10.2013