sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder If-villkor i where-klausul

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

Ser ut som det här kommer att fungera med Postres

Redigera:

Lämnar mitt ursprungliga svar eftersom kärnan fungerar men Postgres har inget koncept med variabler som andra RDBMS så jag skrev om detta som

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;

Här är en SQL-fiol visar det



  1. Hur kan en LEFT OUTER JOIN returnera fler poster än vad som finns i den vänstra tabellen?

  2. PHP Rotera och lägg till en array

  3. SSIS och MySQL - Problem med tabellnamnavgränsare

  4. Hur skapar man en funktion som returnerar högsta id?