PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verwendung der If-Bedingung in der Where-Klausel

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

Sieht so aus das funktioniert mit Postres

Bearbeiten:

Ich belasse meine ursprüngliche Antwort, weil das Wesentliche funktioniert, aber Postgres hat kein Konzept von Variablen wie andere RDBMSs, also habe ich dies umgeschrieben als

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;

Hier ist ein SQL Fiddle zeigt das