我有一系列输出类似结果的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"这是一个好方法。或"客户"在每个记录旁边的新列中?
有什么想法吗?
感谢您的帮助!! 克雷格
答案 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
. . .