MIT_AHIR Ответов: 1

Как проверить значения в SQL


1-й способ получения строки, значение которой больше, чем значение другого столбца таблицы

2-й или получить значение как 0, если запись недоступна в другой таблице

Что я уже пробовал:

SELECT        t1.no, t1.itemcode, t1.quantity, t2.INVOICE_QTY, t1.quantity - t2.INVOICE_QTY AS 'REMAINING QTY'
FROM            t1 LEFT OUTER JOIN
                         t2 ON t1.no = t2.no
WHERE        (t1.quantity > t2.INVOICE_QTY) AND (t1.no = @no)

ZurdoDev

1. Выберите пункт *
из таблицы
Где field1 > field2

2. Выберите *, CASE t2.someid WHEN NULL THEN 0 ELSE someField END
Из таблицы Т1
Таблица2 левое соединение Т2 по Т1.ИД = Т2.someid

Они будут работать, но вы не дали достаточно подробностей, чтобы знать, являются ли они тем, что вам нужно наверняка или нет.

1 Ответов

Рейтинг:
1

Richard Deeming

Ты делаешь что-то ... LEFT JOIN таким образом , порядок оценки имеет значение.

Для записей в t1 без соответствующей записи в t2, колонка t2.INVOICE_QTY будет Null Следовательно, ваше состояние в WHERE условие не будет выполнено, и эти записи будут удалены из результата.

Вы можете либо обновить условие, чтобы учесть это:

... 
WHERE (t1.quantity > t2.INVOICE_QTY Or t2.INVOICE_QTY Is Null) And t1.no = @no

Или же вы можете переместить условие в JOIN, так что он будет применен раньше:
... 
FROM t1
LEFT OUTER JOIN t2
ON t1.no = t2.no 
And t1.quantity < t2.INVOICE_QTY
WHERE t1.no = @no