Я использую следующий запрос:
SELECT tblTxn.Currency, tblTxn.Amount, tblTxn.Desc, tblAccounts.Account, tblTxn.Type
FROM tblAccounts
INNER JOIN tblTxn ON (tblAccounts.Currency = tblTxn.Currency)
WHERE
tblTxn.Type=tblAccounts.Type OR
(tblAccounts.Type Is Null And tblAccounts.Type Is Null);
Здесь tblTxn.Type
и tblAccounts.Type
могут иметь значения или нулевые значения.
Мне нужно, чтобы оба соответствовали.Пустые значения показывают ожидаемый результат, но значения нет.
Как это исправить?
Я использовал запрос в MS Access 2007. Из приведенных ниже решений я изменил запроскак:
SELECT tblTxn.Currency, tblTxn.Amount, tblTxn.Desc, tblAccounts.Account, tblTxn.Type FROM tblAccounts INNER JOIN tblTxn ON tblAccounts.Currency = tblTxn.Currency WHERE Nz(tblTxn.Type,0) = Nz(tblAccounts.Type,0)
Сейчас показывает ожидаемый результат. Спасибо за отличную поддержку. NB. (Функция Nz (Value, [ValueIfNull]) * - это альтернатива COALESCE в Access.)
Одна вещь, которую я хотел бы знать,если я использую WHERE tblTxn.Type=tblAccounts.Type OR Nz(tblTxn.Type,0) = Nz(tblAccounts.Type,0)
, он показывает тот же результат.Как ваш запрос работал с ненулевыми значениями, когда вы сопоставляли только нулевые значения?