簡體   English   中英

分組依據 - 對不同的組應用不同的過濾器

[英]Group by - Apply different filters for different groups

查詢 1 -

select rend, pay, count(*) from payer
where pay = '1'
group by rend, pay

查詢 2 -

select rend, count(*) from payer
where pay = '2'
or 
(
pay = '3' AND model_code IN ( 'MGD', 'MEDI' )
)
group by rend

組合查詢 -

如果我像下面這樣組合查詢,我會得到第一個查詢的正確計數,因為它沒有任何額外的過濾器。 如何將第二個查詢中的過濾器應用於以下查詢,以便它們不適用於Query 1使用的pay_type = 1 Query 1 我基本上希望將這兩個查詢組合成一個查詢,因此我不必為每個具有 where 子句的pay編寫多個 cte。

select rend, pay, count(*) from payer
group by rend, pay
select rend, pay, count(*)
from payer
where case when pay = '1' then 1
           when pay = '2' then 1
           when pay = '3' and model_code in ('MGD', 'MEDI') then 1 
         = 1
group by rend, pay;

簡單地做這個怎么樣?

select rend, max(pay), count(*) from payer
where pay in ('1', '2') or
      (pay = '3' and model_code in ( 'MGD', 'MEDI' )
      )
group by rend;

目前還不清楚第二個查詢的第二列需要什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM