sql >> Databáze >  >> RDS >> PostgreSQL

Použití podmínky If v 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

Vypadá to bude fungovat s Postres

Upravit:

Opouštím svou původní odpověď, protože podstata funguje, ale Postgres nemá koncept proměnných jako ostatní RDBMS, takže jsem to přepsal 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;

Zde je SQL Fiddle ukazující to



  1. Připojení k databázi RDS z node.js

  2. Oracle SQL dotaz pro seskupení po sobě jdoucích záznamů

  3. Jak vygenerovat skript pro povolení všech omezení cizích klíčů v databázi SQL Server - SQL Server / Výukový program TSQL, část 78

  4. Jak bezpečně ukládat hesla do databáze?