Как объединять две консультации ORACLE?

Я нуждаюсь в том, чтобы объединить 2 консультации в одной, консультирует ее, что у меня есть, - следующее:

    SELECT TOTAL_NACIONAL,
       TOTAL_EXITOSO_NACIONAL,
       TOTAL_NOEXITOSO_NACIONAL,
       ROUND ( ( (TOTAL_EXITOSO_NACIONAL / TOTAL_NACIONAL) * 100), 2) TASA
  FROM (
                SELECT *
                    FROM (
                                SELECT COUNT (STATUS) AS TOTAL_NACIONAL,
                                    SUM (CASE WHEN STATUS = 1 THEN 1 ELSE 0 END) AS TOTAL_EXITOSO_NACIONAL,
                                    SUM (CASE WHEN STATUS = 0 THEN 1 ELSE 0 END) AS TOTAL_NOEXITOSO_NACIONAL
                                FROM VAS.CDR_DATA_USSD
                                    WHERE HORAINICIO >= TO_DATE ('17/03/2019 00:00:00', 'dd/mm/yyyy HH24:MI:SS')
                                        AND HORAINICIO <= TO_DATE ('17/03/2019 23:59:59','dd/mm/yyyy HH24:MI:SS')
                                        AND CODIGOSERVICIO <> 111
                                        AND CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28')
                            )
                )

И это другая консультация, которую я нуждаюсь в том, чтобы добавить:

SELECT SUM (CASE WHEN STATUS = 1 THEN 1 ELSE 0 END) AS TOTAL_EXITOSO_NACIONAL_SIN_CONDICION,
                        SUM (CASE WHEN STATUS = 0 THEN 1 ELSE 0 END) AS TOTAL_NOEXITOSO_NACIONAL_SIN_CONDICION
                            FROM VAS.CDR_DATA_USSD
                                WHERE HORAINICIO >= TO_DATE ('17/03/2019 00:00:00', 'dd/mm/yyyy HH24:MI:SS')
                                    AND HORAINICIO <= TO_DATE ('17/03/2019 23:59:59','dd/mm/yyyy HH24:MI:SS')
                                    AND CODIGOSERVICIO <> 111

Если они замечают, это та же консультация, но без условия CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28') Я нуждаюсь в том, чтобы достать сейчас ставку без этого условия

1
задан 18.03.2019, 15:54
1 ответ

Если не ты entendГ - плохо, что ты можешь делать, является суммой и условным счетом из-за fitro, что ты упоминаешь о CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28'):

SELECT  COUNT(CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28') THEN STATUS ELSE NULL END)                AS TOTAL_NACIONAL,
        SUM(CASE WHEN STATUS = 1 AND CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28') THEN 1 ELSE 0 END) AS TOTAL_EXITOSO_NACIONAL,
        SUM(CASE WHEN STATUS = 0 AND CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28') THEN 1 ELSE 0 END) AS TOTAL_NOEXITOSO_NACIONAL,
        -- Ahora totales sin la condición original
        COUNT (STATUS)                                                                                    AS TOTAL_NACIONAL_2,
        SUM (CASE WHEN STATUS = 1 THEN 1 ELSE 0 END)                                                      AS TOTAL_EXITOSO_NACIONAL_2,
        SUM (CASE WHEN STATUS = 0 THEN 1 ELSE 0 END)                                                      AS TOTAL_NOEXITOSO_NACIONAL_2
    FROM VAS.CDR_DATA_USSD
    WHERE   HORAINICIO >= TO_DATE ('17/03/2019 00:00:00', 'dd/mm/yyyy HH24:MI:SS')
            AND HORAINICIO <= TO_DATE ('17/03/2019 23:59:59','dd/mm/yyyy HH24:MI:SS')
            AND CODIGOSERVICIO <> 111

Подробно описал:

  • мы изменяем только субконсультацию, чтобы добавлять 3 новые колонны
  • Убираем от WHERE она condiciГіn оригинал
  • Изменяем функции agregaciГіn для того, чтобы actГєen в funciГіn ее condiciГіn CAUSATERMINO IN ('0', '-20', '-16', '-21', '-28') для первых трех колонн и три следующий без этой condiciГіn.
2
ответ дан 02.12.2019, 05:28

Теги

Похожие вопросы