2016-06-24 7 views
1

私はPL/SQLデータベースを使用するOpen Text Content Serverツールを開発中です。私がやろうとしているのは、異なる条件とテーブルを持つ6つの異なるクエリを通してカウントデータを取得することです。私はこれらの6つのカウントのクエリをすべて組み合わせることを試みていましたが、運はありません。以下は、これらの6つのクエリが記載されています:月に作成されたPL/SQL:テーブルと条件がすべて異なる場合に、単一のクエリで複数のcount文を実装する方法

ドキュメント:ユーザーの

select count (dataid) from Dtree where 
Createdate >= %1 and createdate <= %2 and subtype = 144 

合計番号:月間にログイン

select count(a.id) from Kuaf a, kuaf b where 
a.deleted =0 and a.type =0 and b.id = a.groupid 

ユニークユーザー(カウント):

Select count (distinct (performerID)) 
from dauditnew where auditid=23 and auditdate >= %1 and auditdate <= %2 

月に作成されたユーザー数:

人の
Select Count(dataid) FROM DAUDITNEW where AUDITID = 1 
AND AUDITSTR LIKE 'Create' and subtype=142 AND 
auditdate >= %1 and auditdate <= %2 

ユーザー削除済み(COUNT):開始

SELECT count(a.userid) from dauditnew a WHERE 
a.auditstr = 'Delete' AND 
a.AuditDate >= %1 AND 
a.AuditDate <= %2 AND 
a.UserID in (Select ID from KUAF where Deleted = 1 and Type=0) 

ワークフロー:

ここ
Select count(*) from Wworkaudit WWA where WWA.workaudit_status=1 AND 
WWA.workaudit_date >= %1 and WWA.workaudit_date <= %2 

% 1、%2つの表すユーザー入力。これらの6つのクエリはすべて条件が非常に異なるため、それらを組み合わせることは難しい作業です。私を助けてください。

ありがとうございます。

+1

を定義してください表示されません出力はどのように表示されるべきですか? 6つのカウントを別々の行に表示し、それらを識別する説明を表示します。または、6列で説明的な列名で表示しますか?または何? – mathguy

+0

これを組み合わせると、これらの6つのクエリすべての作業を行う1つのクエリが必要になることを意味します。わたしは6つの異なる列にカウントを表示したいのですが、ありがとう –

答えて

2
SELECT (
     select count (dataid) 
     from Dtree 
     where Createdate BETWEEN :start_date and :end_date 
     and subtype = 144 
     ) AS Docs_Per_Month, 
     (
     select count(a.id) 
     from Kuaf a INNER JOIN kuaf b ON (b.id = a.groupid) 
     where a.deleted = 0 
     and a.type = 0 
     ) AS Total_No_of_Users, 
     (
     Select count(distinct performerID) 
     from dauditnew 
     where auditid = 23 
     and auditdate BETWEEN :start_date and :end_date 
     ) AS Unique_Users_in_Month, 
     (
     Select Count(dataid) 
     FROM DAUDITNEW 
     where AUDITID = 1 
     AND AUDITSTR = 'Create' 
     and subtype = 142 
     AND auditdate BETWEEN :start_date and :end_date 
     ) AS Users_Created_in_Month, 
     (
     SELECT count(a.userid) 
     from dauditnew a 
     WHERE a.auditstr = 'Delete' 
     AND a.auditdate BETWEEN :start_date and :end_date 
     AND a.UserID in (Select ID from KUAF where Deleted = 1 and Type=0) 
     ) AS Users_Deleted, 
     (
     Select count(*) 
     from Wworkaudit 
     where workaudit_status = 1 
     AND workaudit_date BETWEEN :start_date and :end_date 
     ) AS Workflows_Initiated 
FROM DUAL; 
+0

ありがとうMT0 ...あなたは私のために本当に大きな頭痛を解決しました。ありがとうございます –

+0

こんにちはMT0、行ではなく列でこのデータをフェッチすることは可能ですか? –

+0

各クエリを取得し、 'SELECT 'Docs_per_month'のように' UNION ALL'を使ってそれらを連結します。Docs_per_month 'AS名、count(dataid)AS頻度FROM dtree ... UNION ALL SELECT' Total_No_Of_Users '、COUNT(a.id)カウフカから... UNION ALL ... ' – MT0

0

UNION ALLステートメントを使用してください。

Ex。 select count(ax)from a ... UNION ALL select count(bz)from b ... where ... UNION ALL select count(cy)から...どこに.. 。 など

注:「それらを組み合わせて、」あなたは、あなたが定期的にUNIONを使用している場合、結果を再現するので、UNION ALLを使用する必要があります

関連する問題