PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używanie warunku If w klauzuli 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

Wygląda na to zadziała z Postres

Edycja:

Pozostawiam moją pierwotną odpowiedź, ponieważ sedno działa, ale Postgres nie ma pojęcia o zmiennych jak inne RDBMS, więc przepisałem to jako

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;

Oto SQL Fiddle pokazując, że



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql SELECT, jeśli ciąg zawiera

  2. Postgresql bezpieczeństwo wątków dla tabel tymczasowych

  3. Ogromna różnica wydajności Postgresql podczas korzystania z IN vs NOT IN

  4. Jak wykorzystać nowe funkcje partycjonowania w PostgreSQL 11?

  5. Krok po kroku postgres_fdw