2016-06-24 3 views
1

PL/SQL 데이터베이스를 사용하는 Open Text Content Server 도구에서 작업하고 있습니다. 내가 뭘 하려는지 다른 조건과 다른 테이블을 가지고있는 6 개의 다른 쿼리를 통해 카운트 데이터를 가져 오는 것입니다. 난이 6 카운트 쿼리지만 행운을 모두 결합하려고했다. 다음은 그 6 개 쿼리가 나열되어 있습니다 : 한달에 만든PL/SQL- 테이블과 조건이 모두 다를 때 단일 쿼리에서 여러 개의 계산 문을 구현하는 방법

문서 : 사용자의

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 

한 달에 생성 된 사용자 (수) :

,515,
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 개의 모든 쿼리 작업을 수행하는 단일 쿼리를 원한다는 것을 의미합니다. 설명적인 열 이름을 사용하여 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'을 사용하여 이들을 연결하십시오. AS 이름, count (dataid) AS 주파수 FROM dtree ... UNION ALL SELECT 'Total_No_Of_Users', COUNT (a.id) 카우프에서 ... UNION ALL ...' – MT0

0

UNION ALL 문 사용

예. select count (ax) from a ... UNION ALL select count (bz) from b ... 여기서 ... UNION ALL select count (cy) from c ... 여기서 .. . 등

참고 : ". 그들을 결합"당신은 당신이 정기적으로 UNION을 사용하는 경우, 결과를 복제하기 때문에, UNION ALL을 사용해야합니다