Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Output Salah dalam kueri FULL OUTER JOIN

Berdasarkan apa yang Anda katakan di bagian komentar, saya pikir Anda perlu mengubah satu potongan kode...

  • Yang saya inginkan adalah kartu itu tidak boleh memiliki field14 sebagai 'Test card'


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

=>

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


Buat tabel logika untuk memeriksa apakah Anda benar-benar ingin AND atau jika Anda ingin 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


EDIT Tindak lanjuti untuk berkomentar

Menggunakan OR dalam kode di atas tidak dapat menghasilkan TRUE ketika Field14 adalah 'Test Card' . Kedua pengujian menghasilkan FALSE dan hasilnya harus FALSE .

Anda perlu memecahnya secara bertahap. Debugging harus dilakukan dengan menguji potongan pada satu waktu dan secara bertahap membuktikan apa yang berhasil untuk mengisolasi apa yang tidak. Jangan pernah mencoba menyelesaikan semuanya sekaligus, lakukan pendekatan secara metodis.

Jalankan tes ini...

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. Apa perbedaan antara menggunakan gabungan silang dan memberi koma di antara dua tabel?

  2. Alternatif untuk menggunakan variabel lokal dalam klausa where

  3. Cara Mengenkripsi Prosedur Tersimpan di SQL Server

  4. Cara mendapatkan jumlah kumulatif

  5. SQL pilih di mana tidak dalam subquery tidak mengembalikan hasil