Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nieprawidłowe dane wyjściowe w zapytaniu FULL OUTER JOIN

W oparciu o to, co powiedziałeś w sekcji komentarzy, myślę, że musisz zmienić jeden fragment kodu...

  • Chcę, aby karta nie zawierała field14 jako 'Test card'


(t1.field14 <> 'Test Card' and t1.field14 is null)

=>

(t1.field14 <> 'Test Card'  OR  t1.field14 is null)


Utwórz tabelę logiczną, aby sprawdzić, czy naprawdę chcesz AND lub jeśli chcesz OR

field14     | (field14 <> 'Test Card') | (t1.field14 is null) | A OR B | A AND B
--------------------------------------------------------------------------------
'Test Card' |            FALSE         |        FALSE         | FALSE  | FALSE
NULL        |            NULL          |        TRUE          | TRUE   | FALSE
'Any Card'  |            TRUE          |        FALSE         | TRUE   | FALSE


EDYTUJ Kontynuuj, aby skomentować

Używanie OR w powyższym kodzie nie może dać TRUE kiedy Field14 to 'Test card' . Oba testy dają FALSE więc wynik musi być FALSE .

Musisz rozbić rzeczy na etapy. Debugowanie powinno odbywać się poprzez testowanie fragmentów na raz i stopniowe udowadnianie, co działa, aby wyizolować to, co nie działa. Nigdy nie próbuj uporządkować wszystkiego na raz, podchodź do rzeczy metodycznie.

Uruchom ten test...

SELECT
  *,
  CASE WHEN field14 <> 'Test Card'                     THEN 1 ELSE 0 END     Test1,
  CASE WHEN field14 IS NULL                            THEN 1 ELSE 0 END     Test2,
  CASE WHEN field14 <> 'Test Card' OR  field14 IS NULL THEN 1 ELSE 0 END     1_OR_2,
  CASE WHEN field14 <> 'Test Card' AND field14 IS NULL THEN 1 ELSE 0 END     1_AND_2
FROM
  tblCustomer



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sterownik sqlsrv 4.0 nie działa w phpinfo()

  2. Konserwacja baz danych systemu SQL Server

  3. BETWEEN operator vs.>=AND <=:Czy istnieje różnica w wydajności?

  4. Instalacja Business Intelligence Development Studio 2008

  5. Jak powiązać parametr ISO8601 TSQL DATETIME z PDO?