Oracle 如何使用CASE WHEN或IF进行选择不同计数?

Oracle 如何使用CASE WHEN或IF进行选择不同计数?,oracle,spring-boot,Oracle,Spring Boot,我希望大家都好,我有一个每周盘点,我有id_txn,付款方式和付款方式,但我有一个例外,那就是当我有一个特定的场景,我希望它被添加到其他付款方式 田地 | id_txn | way_pay | payment_meth | 123435 | gateway | transfer 433564 | on-site | cash 354641 | gateway | cash 124553 | paypal | transfer 我希望当way\u pay=gatewa

我希望大家都好,我有一个每周盘点,我有id_txn,付款方式和付款方式,但我有一个例外,那就是当我有一个特定的场景,我希望它被添加到其他付款方式

田地

| id_txn | way_pay | payment_meth |
  123435 | gateway | transfer    
  433564 | on-site | cash
  354641 | gateway | cash 
  124553 | paypal  | transfer
我希望当way\u pay=gateway和payment\u meth=transfer时,将计数添加到paypal/transfer中

我的问题

select distinct way_pay, payment_meth,
  count(id_txn) as ttl_pays
from 
  pays
where 
  trunc(init_date) between trunc(to_date('date'))
case 
  when way_pay = 'gateway' and payment_meth = 'transfer' 
  then + pay_pal/transfer

group by way_pay, payment_meth;

way\u pay
为“网关”或“paypal”且
paymeth
为“转账”时,下面的案例语句将返回“paypay”,否则将返回
way\u pay
。group by也需要相同的语句

如果需要对不同的txn_id进行计数,则应将
distinct
移动到计数函数中

select 
  case when way_pay in ('gateway','paypal') and payment_meth = 'transfer' then 'paypal' else way_pay end way_pay,
  payment_meth,
  count(distinct id_txn) as ttl_pays
from 
  pays
where
  init_date between trunc(sysdate-7) and trunc(sysdate)
group by
  case when way_pay in ('gateway','paypal') and payment_meth = 'transfer' then 'paypal' else way_pay end,
  payment_meth

way\u pay
为“网关”或“paypal”且
paymeth
为“转账”时,下面的案例语句将返回“paypay”,否则将返回
way\u pay
。group by也需要相同的语句

如果需要对不同的txn_id进行计数,则应将
distinct
移动到计数函数中

select 
  case when way_pay in ('gateway','paypal') and payment_meth = 'transfer' then 'paypal' else way_pay end way_pay,
  payment_meth,
  count(distinct id_txn) as ttl_pays
from 
  pays
where
  init_date between trunc(sysdate-7) and trunc(sysdate)
group by
  case when way_pay in ('gateway','paypal') and payment_meth = 'transfer' then 'paypal' else way_pay end,
  payment_meth

是否需要count为0的行,否则可以使用下面的查询


是否需要count为0的行,否则可以使用下面的查询