2017-05-03 4 views
0

同様の結果を出力する一連のSQLがありますが、目的は少し異なります。すべてのフィールドの1つが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 

私はこれを簡略化したいので、管理者を数えてクライアントを数えるために2回実行する必要はありません。 oper_IDは、すべてのSQLのselect文にあります。

各レコードの数を作成するか、各レコードの横の新しい列に少なくとも「管理者」または「クライアント」を配置するとよいでしょうか?

アイデア?

助けてくれてありがとう! Craig

+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 
. . . 
+0

それはうまくいったが、 '[[:digit:]]'の後ろに閉じ括弧を追加する必要があった –

関連する問題