You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle多列交易次数统计:筛选累计至少2次成功交易的客户

Oracle查询:统计累计成功交易≥2次的客户

嘿,针对你需要统计客户成功交易次数(Y代表成功)并筛选出累计≥2次的需求,我整理了两种可行的Oracle查询方案,直接就能用:

思路说明

核心是把每个交易列的Y转换为1,N转换为0,然后对每个客户的这三列求和得到总成功次数,最后过滤出总和≥2的记录,自动排除仅1次或0次成功交易的客户。

方案1:使用CASE表达式(可读性更强)

如果需要单独展示客户名和成功次数,用这个:

SELECT 
    Customer_Name,
    (CASE WHEN Col1 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col2 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col3 = 'Y' THEN 1 ELSE 0 END) AS Total_Successful_Transactions
FROM 
    Your_Table_Name  -- 记得替换成你的实际表名
WHERE 
    (CASE WHEN Col1 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col2 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col3 = 'Y' THEN 1 ELSE 0 END) >= 2
ORDER BY 
    Customer_Name;

如果要直接输出Customer1 - 2这种格式,用字符串拼接版本:

SELECT 
    Customer_Name || ' - ' || 
    (CASE WHEN Col1 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col2 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col3 = 'Y' THEN 1 ELSE 0 END) AS Customer_Success_Summary
FROM 
    Your_Table_Name  -- 替换成实际表名
WHERE 
    (CASE WHEN Col1 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col2 = 'Y' THEN 1 ELSE 0 END +
     CASE WHEN Col3 = 'Y' THEN 1 ELSE 0 END) >= 2
ORDER BY 
    Customer_Name;

方案2:使用DECODE函数(更简洁)

Oracle的DECODE函数也能实现同样的转换,代码更紧凑:

SELECT 
    Customer_Name || ' - ' || 
    (DECODE(Col1, 'Y', 1, 0) + DECODE(Col2, 'Y', 1, 0) + DECODE(Col3, 'Y', 1, 0)) AS Customer_Success_Summary
FROM 
    Your_Table_Name
WHERE 
    (DECODE(Col1, 'Y', 1, 0) + DECODE(Col2, 'Y', 1, 0) + DECODE(Col3, 'Y', 1, 0)) >= 2
ORDER BY 
    Customer_Name;

测试验证

用你给出的示例数据测试时,这两个方案都会返回:

Customer1 - 2
Customer3 - 2

完全符合你的期望输出~

内容的提问来源于stack exchange,提问作者Subramanian Muthupandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:47