oracle - 如何在 CASE WHEN 或 IF 中选择不同的计数?
问题描述
我希望和每个人都很好,我有一个每周计数,我有 id_txn,付款方式和付款方式,但我有一个例外,那就是当我有一个特定的场景时,我希望它被添加到另一种付款方式。
字段
| id_txn | way_pay | payment_meth |
123435 | gateway | transfer
433564 | on-site | cash
354641 | gateway | cash
124553 | paypal | transfer
我希望当 way_pay = gateway 和 payment_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;
解决方案
下面的 case 语句将在way_pay
'gateway' 或 'paypal' 时返回 'paypay',并且payment_meth
是 'transfer',否则返回way_pay
。group by 也需要相同的语句。
如果你想要一个不同的 txn_id 计数,那么distinct
应该将它移到 count 函数中。
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
推荐阅读
- visual-c++ - 使用“auto”将文字数字设置为“INT_PTR”
- python - 以数字长度为幂的所有数字分量的总和必须等于相同的数字
- python - 如何在python中为geoJSON从txt文件输入数据集
- reactjs - 我想将一个对象添加到反应数组
- tableau-api - 从 Tableau Online API 下载本地工作簿 twb/tbwx
- java - JSP提交给JAVA
- html - 如何在图像和文本之间创建棋盘图案
- javascript - 在 next.js 中,如何实现 session?
- java - 返回包含变量值的类的对象
- curl - 在 pod 中定位 prometheus 配置并查找指标保留时间的问题