具有数字的字段数

时间:2017-05-03 19:02:00

标签: sql oracle11g

我有一系列输出类似结果的SQL,但目的略有不同。所有这些领域中的一个是oper_ID。 oper_ID可以包含字母和数字。 Admin oper_ID中没有数字。客户oper_ID最后有数字。例如。管理员:johnsmith,客户:mikejones12345。

我已经在我的sql中注释掉/取决于我想要获得的内容。

--AND REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') -- return only client userIDs    
--AND NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') -- return only admin userIDs

我想简化这个,所以我不必运行两次来计算管理员,然后计算客户端。 oper_ID位于所有SQL中的select语句中。

创建每个人的计数或者至少放一个" admin"这是一个好方法。或"客户"在每个记录旁边的新列中?

有什么想法吗?

感谢您的帮助!! 克雷格

1 个答案:

答案 0 :(得分:1)

我认为您只想要条件聚合或group by

例如:

SELECT SUM(CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END) as clients,
       SUM(CASE WHEN NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END) as admins
. . .