Пример использования SQL Server с двумя таблицами соответствия - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть две таблицы:

  1. Таблица счетов
  2. Таблица соответствия_фильтра

Таблица соответствия фильтра содержит столбцы, которые должны совпадать с одинаковыми столбцами в Accounts таблица, если СООТВЕТСТВУЮЩИЕ КОЛОННЫ УСТАНОВЛЕНЫ, где -1 не заданное значение, а другое значение является заданным значением.

Использование CASE с предложением WHERE не удалось с моим кодом

Thisмоя попытка:

SELECT A.*
FROM dbo.App_Account_Match_Filter F
INNER JOIN dbo.App_Accounts_Data A ON F.Apm_File_Type_LK <> A.Apa_File_Type_LK
WHERE F.Apm_ID = 1
      CASE WHEN F.Apm_Nationality_LK <> -1 THEN  A.Apm_Nationality_LK = F.Apa_Nationality_LK END

1 Ответ

2 голосов
/ 03 ноября 2019

CASE - это выражение , оно возвращает скалярное значение, а не логическое значение. Вам нужно использовать правильную логическую логику. Видя, что в вашем выражении CASE нет ELSE, кажется, вам просто нужно это:

SELECT A.*
FROM dbo.App_Account_Match_Filter F
     INNER JOIN dbo.App_Accounts_Data A ON F.Apm_File_Type_LK <> A.Apa_File_Type_LK
WHERE F.Apm_ID = 1
  AND F.Apm_Nationality_LK <> -1
  AND A.Apm_Nationality_LK = F.Apa_Nationality_LK;
...