sql >> Database >  >> RDS >> PostgreSQL

If-voorwaarde gebruiken in waar-clausule

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

Ziet eruit als dit werkt met Postres

Bewerken:

Mijn oorspronkelijke antwoord verlaten omdat de essentie werkt, maar Postgres heeft geen concept van variabelen zoals andere RDBMS'en, dus ik herschreef dit 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 is een SQL Fiddle laat zien dat



  1. Vragen die u moet stellen voordat u een database start

  2. Hoe kan ik alle tabellen in MySQL vinden met specifieke kolomnamen erin?

  3. Een standaard datumnotatie instellen op PostgreSQL

  4. Verbinding maken met Heroku Postgres vanuit Spring Boot