PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan kondisi If dalam klausa where

select * from sampleTable
where 
  case when @taxtype = 'P' then
    (taxtype = 'P' or  (taxtype = 'E' and code in ('MER','SER')))
  Else
    (taxtype = 'E' and code not in ('MER','SER'))
  end

Sepertinya ini akan bekerja dengan Postres

Sunting:

Meninggalkan jawaban asli saya karena intinya berfungsi tetapi Postgres tidak memiliki konsep variabel seperti RDBMS lainnya jadi saya menulis ulang ini sebagai

WITH myconstants as (SELECT 'P'::text as vtaxtype)

select * from sampleTable
where 
  case when (select vTaxType from myconstants) = 'P' then
    (taxtype = 'P' or  (taxtype = 'E' and code in ('MER','SER')))
  Else
    (taxtype = 'E' and code not in ('MER','SER'))
  end;

Berikut SQL Fiddle menunjukkan bahwa



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Total Periode Bergulir

  2. Penguncian predikat di PostgreSQL 9.2.1 dengan isolasi Serializable

  3. Masukkan ke dalam tabel setelah mendapatkan ID dari tabel lain

  4. Postgres + Hibernate + Java UUID

  5. Driver QPSQL tidak dimuat Qt