如何合并两段SQL实现按编码前3位统计6月起止的记录数
合并后的可执行SQL
方案1(更通用,无需枚举前缀)
直接通过字符串截取函数取Code前3位作为分组维度,无需提前写死前缀规则,后续新增其他前缀也能正常统计:
SELECT LEFT(Code, 3) AS Code, COUNT(*) AS "Count Code in June" FROM Loan WHERE MONTH(Start) = 6 OR MONTH(End) = 6 GROUP BY LEFT(Code, 3);
如果你的数据库不支持LEFT函数,替换为SUBSTRING(Code, 1, 3)即可。
方案2(沿用你原有CASE判断逻辑)
如果你需要保留之前写的前缀匹配规则,调整如下即可执行:
SELECT CASE WHEN Code LIKE 'SKX%' THEN 'SKX' WHEN Code LIKE 'SRP%' THEN 'SRP' END AS Code, COUNT(*) AS "Count Code in June" FROM Loan WHERE MONTH(Start) = 6 OR MONTH(End) = 6 GROUP BY CASE WHEN Code LIKE 'SKX%' THEN 'SKX' WHEN Code LIKE 'SRP%' THEN 'SRP' END;
执行逻辑说明
- 先通过
WHERE条件过滤出所有Start或End日期在6月的记录 - 按Code提取出的前3位前缀分组
- 统计每个分组的记录数,最终输出结果和你预期的完全一致。
内容的提问来源于stack exchange,提问作者Fuji
相关产品推荐
相关产品推荐

