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
Có vẻ như điều này sẽ hoạt động với Postres
Chỉnh sửa:
Để lại câu trả lời ban đầu của tôi vì ý chính hoạt động nhưng Postgres không có khái niệm về biến giống như các RDBMS khác nên tôi đã viết lại cái này là
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;
Đây là SQL Fiddle cho thấy rằng