2016-02-26 3 views
1

Необходимо получить от типа номера мудрая женщина и мужчина счета, ниже мой запросоракул запрос с использованием Союза Все

(SELECT WARD,ROOMTYPE ,FEMALE,MALE 
FROM 
(SELECT NS.WARD,RC.ROOMTYPE,(DECODE(IP.GENDER,'F',COUNT(IP.HNO)))FEMALE,(DECODE(IP.GENDER,'M',COUNT(IP.HNO)))MALE FROM BEDSHIFT R,BED B,NURSTATION NS,PATIENTS IP,ROOMTYPE RT,ROOMCATEGORY RC 
WHERE R.BD_CODE=B.BD_CODE AND B.NS_CODE=NS.NS_CODE AND R.IP_NO=IP.IP_NO AND R.RMC_OCCUPBY='B' 
AND B.RT_CODE=RT.RT_CODE AND RT.RC_CODE=RC.RC_CODE 
AND IP.IPC_STATUS IS NULL AND R.RMC_RELESETYPE IS NULL GROUP BY RC.ROOMTYPE,NS.WARD,IP.GENDER 
UNION ALL 
SELECT NS.WARD,RC.ROOMTYPE,(DECODE(IP.GENDER,'F',COUNT(IP.HNO)))FEMALE,(DECODE(IP.GENDER,'M',COUNT(IP.HNO)))MALE FROM PATIENTS IP,BED BD,NURSTATION NS,ROOMTYPE RT,ROOMCATEGORY RC 
WHERE IP.BD_CODE=BD.BD_CODE 
AND BD.RT_CODE=RT.RT_CODE AND RT.RC_CODE=RC.RC_CODE 
AND BD.NS_CODE=NS.NS_CODE AND IP.IPC_STATUS IS NULL GROUP BY RC.ROOMTYPE,NS.WARD,IP.GENDER) 
    T 
GROUP BY FEMALE,MALE,WARD,ROOMTYPE) ORDER BY WARD 

возвращается ниже

enter image description here

нужно получить как

enter image description here

+0

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

ответ

2

Группа только один раз и просуммировать самцов и самок:

SELECT WARD, ROOMTYPE, sum(FEMALE), sum(MALE) 
    FROM (SELECT NS.WARD, 
       RC.ROOMTYPE, 
       IP.GENDER, 'F', COUNT(IP.HNO))) FEMALE, 
       IP.GENDER, 'M', COUNT(IP.HNO))) MALE 
      FROM BEDSHIFT  R, 
       BED   B, 
       NURSTATION NS, 
       PATIENTS  IP, 
       ROOMTYPE  RT, 
       ROOMCATEGORY RC 
     WHERE R.BD_CODE = B.BD_CODE 
      AND B.NS_CODE = NS.NS_CODE 
      AND R.IP_NO = IP.IP_NO 
      AND R.RMC_OCCUPBY = 'B' 
      AND B.RT_CODE = RT.RT_CODE 
      AND RT.RC_CODE = RC.RC_CODE 
      AND IP.IPC_STATUS IS NULL 
      AND R.RMC_RELESETYPE IS NULL 
     UNION ALL 
     SELECT NS.WARD, 
       RC.ROOMTYPE, 
       (DECODE(IP.GENDER, 'F', COUNT(IP.HNO))) FEMALE, 
       (DECODE(IP.GENDER, 'M', COUNT(IP.HNO))) MALE 
      FROM PATIENTS  IP, 
       BED   BD, 
       NURSTATION NS, 
       ROOMTYPE  RT, 
       ROOMCATEGORY RC 
     WHERE IP.BD_CODE = BD.BD_CODE 
      AND BD.RT_CODE = RT.RT_CODE 
      AND RT.RC_CODE = RC.RC_CODE 
      AND BD.NS_CODE = NS.NS_CODE 
      AND IP.IPC_STATUS IS NULL) T 
GROUP BY WARD, ROOMTYPE 
ORDER BY WARD 

Таким образом, запрос должен быть быстрее, чем группируя три раза, или даже четыре раза. Вы также можете использовать подзапросы для мужчин и женщин, что может быть даже быстрее без группировки вообще (не видя схемы, я бы не дал вам запрос).

+0

это работал!!! Могу ли я получить общее количество женщин и мужчин? – user2119324

+0

@ user2119324 Просто введите сумму COUNT (IP.HNO) –

1

изменение первая линия

(SELECT WARD,ROOMTYPE ,SUM(FEMALE) AS FEMALE, SUM(MALE) AS MALE 

и последняя линия

GROUP BY WARD,ROOMTYPE) ORDER BY WARD,ROOMTYPE 
Смежные вопросы