如何创建按Destination分组统计A/B开头Material的视图?
按目的地分组统计指定前缀物料数量的视图实现
核心SQL语句
使用CASE结合聚合函数,配合GROUP BY实现通用的分组统计,无需硬编码目的地:
CREATE VIEW MaterialStatsByDestination AS SELECT Destination, COUNT(CASE WHEN Material LIKE 'A%' THEN 1 END) AS `Count Material A`, COUNT(CASE WHEN Material LIKE 'B%' THEN 1 END) AS `Count Material B` FROM YourTableName -- 替换为你的实际表名 GROUP BY Destination;
逻辑说明
CASE WHEN Material LIKE 'A%' THEN 1 END:仅对以"A"开头的物料返回1,其他情况返回NULLCOUNT()函数会自动忽略NULL值,因此最终统计的就是对应前缀物料的数量,无匹配时结果为0GROUP BY Destination:自动按表中所有存在的目的地分组,后续新增目的地无需修改代码
等价写法(使用SUM)
如果更习惯用SUM,也可以写成:
CREATE VIEW MaterialStatsByDestination AS SELECT Destination, SUM(CASE WHEN Material LIKE 'A%' THEN 1 ELSE 0 END) AS `Count Material A`, SUM(CASE WHEN Material LIKE 'B%' THEN 1 ELSE 0 END) AS `Count Material B` FROM YourTableName GROUP BY Destination;
结果验证
针对你提供的示例数据,执行后会得到如下结果:
| Destination | Count Material A | Count Material B |
|---|---|---|
| Dest1 | 1 | 2 |
| Dest2 | 1 | 0 |
内容的提问来源于stack exchange,提问作者nnbeak
相关产品推荐
相关产品推荐

