QUERY SELECT (oracle sqldeveloper)

1

Have the query below.

SELECT 
'A. ABERTOS' QUANTIDADE,
(SELECT SUM(S) 
  FROM
  (SELECT COUNT(*) S
   FROM VW_SOLICITACAO_DETALHE VW
     INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = VW.ID_SOLICITACAO
     WHERE (VW.COD_TIPO_SERVICO IN ('MC','OP') OR (VW.COD_TIPO_SERVICO IN ('SA') AND SOL.IND_DPU = 'S'))
     AND YEAR(VW.DATA_ABERTURA_SOLICITACAO) = ('2014') AND MONTH(VW.DATA_ABERTURA_SOLICITACAO) = 1
   UNION ALL
   SELECT COUNT(*) S
   FROM APROPRIACAO APR 
     INNER JOIN ATIVIDADE ATIV ON ATIV.ID_ATIVIDADE = APR.ID_ATIVIDADE
     INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = ATIV.ID_SOLICITACAO
     INNER JOIN SITUACAO_SOLICITACAO TSOL ON TSOL.ID_SITUACAO_SOLICITACAO = SOL.ID_SITUACAO_SOLICITACAO
     INNER JOIN CLIENTE CLI ON  CLI.ID_CLIENTE = SOL.ID_CLIENTE 
WHERE YEAR(APR.DATA_APROPRIACAO) = ('2014') AND MONTH(APR.DATA_APROPRIACAO) = 2
   AND TSOL.DSC_SITUACAO_SOLICITACAO NOT IN ('Desenvolvimento Cancelado')
   AND SOL.COD_SOLICITACAO NOT LIKE 'SA%' 
GROUP BY CLI.ID_CLIENTE
  ) ITEM
) JAN,
(SELECT SUM(S)
   FROM
  (SELECT COUNT(*) S
   FROM VW_SOLICITACAO_DETALHE VW
     INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = VW.ID_SOLICITACAO
      WHERE (VW.COD_TIPO_SERVICO IN ('MC','OP') OR (VW.COD_TIPO_SERVICO IN ('SA') AND SOL.IND_DPU = 'S'))
     AND YEAR(VW.DATA_ABERTURA_SOLICITACAO) = ('2014') AND MONTH(VW.DATA_ABERTURA_SOLICITACAO) = 2
   UNION ALL
   SELECT COUNT(*) S
   FROM APROPRIACAO APR 
     INNER JOIN ATIVIDADE ATIV ON ATIV.ID_ATIVIDADE = APR.ID_ATIVIDADE
     INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = ATIV.ID_SOLICITACAO
     INNER JOIN SITUACAO_SOLICITACAO TSOL ON TSOL.ID_SITUACAO_SOLICITACAO = SOL.ID_SITUACAO_SOLICITACAO
     INNER JOIN CLIENTE CLI ON  CLI.ID_CLIENTE = SOL.ID_CLIENTE 
WHERE YEAR(APR.DATA_APROPRIACAO) = ('2014') AND MONTH(APR.DATA_APROPRIACAO) = 2
   AND TSOL.DSC_SITUACAO_SOLICITACAO NOT IN ('Desenvolvimento Cancelado')
   AND SOL.COD_SOLICITACAO NOT LIKE 'SA%'
GROUP BY CLI.ID_CLIENTE    
  )
  )

Her return is this:

I have already grouped it per client, but I can not put the CLIENT as part of the select, how do I get it back grouped by the client?

Thank you

    
asked by anonymous 23.11.2014 / 03:13

1 answer

1

Try something like the query below:

    WITH query1 AS
      (SELECT COUNT(*) S,
              CLI.ID_CLIENTE
       FROM VW_SOLICITACAO_DETALHE VW
       INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = VW.ID_SOLICITACAO
       WHERE (VW.COD_TIPO_SERVICO IN ('MC',
                                      'OP')
              OR (VW.COD_TIPO_SERVICO IN ('SA')
                  AND SOL.IND_DPU = 'S'))
         AND YEAR(VW.DATA_ABERTURA_SOLICITACAO) = ('2014')
         AND MONTH(VW.DATA_ABERTURA_SOLICITACAO) = 1
       UNION ALL SELECT COUNT(*) S
       FROM APROPRIACAO APR
       INNER JOIN ATIVIDADE ATIV ON ATIV.ID_ATIVIDADE = APR.ID_ATIVIDADE
       INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = ATIV.ID_SOLICITACAO
       INNER JOIN SITUACAO_SOLICITACAO TSOL ON TSOL.ID_SITUACAO_SOLICITACAO = SOL.ID_SITUACAO_SOLICITACAO
       INNER JOIN CLIENTE CLI ON CLI.ID_CLIENTE = SOL.ID_CLIENTE
       WHERE YEAR(APR.DATA_APROPRIACAO) = ('2014')
         AND MONTH(APR.DATA_APROPRIACAO) = 2
         AND TSOL.DSC_SITUACAO_SOLICITACAO NOT IN ('Desenvolvimento Cancelado')
         AND SOL.COD_SOLICITACAO NOT LIKE 'SA%'
       GROUP BY CLI.ID_CLIENTE),
         query2 AS (
    SELECT SUM(S),
           ID_CLIENTE
    FROM
      (SELECT COUNT(*) S,
              CLI.ID_CLIENTE
       FROM VW_SOLICITACAO_DETALHE VW
       INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = VW.ID_SOLICITACAO
       WHERE (VW.COD_TIPO_SERVICO IN ('MC',
                                      'OP')
              OR (VW.COD_TIPO_SERVICO IN ('SA')
                  AND SOL.IND_DPU = 'S'))
         AND YEAR(VW.DATA_ABERTURA_SOLICITACAO) = ('2014')
         AND MONTH(VW.DATA_ABERTURA_SOLICITACAO) = 2
       UNION ALL SELECT COUNT(*) S
       FROM APROPRIACAO APR
       INNER JOIN ATIVIDADE ATIV ON ATIV.ID_ATIVIDADE = APR.ID_ATIVIDADE
       INNER JOIN SOLICITACAO SOL ON SOL.ID_SOLICITACAO = ATIV.ID_SOLICITACAO
       INNER JOIN SITUACAO_SOLICITACAO TSOL ON TSOL.ID_SITUACAO_SOLICITACAO = SOL.ID_SITUACAO_SOLICITACAO
       INNER JOIN CLIENTE CLI ON CLI.ID_CLIENTE = SOL.ID_CLIENTE
       WHERE YEAR(APR.DATA_APROPRIACAO) = ('2014')
         AND MONTH(APR.DATA_APROPRIACAO) = 2
         AND TSOL.DSC_SITUACAO_SOLICITACAO NOT IN ('Desenvolvimento Cancelado')
         AND SOL.COD_SOLICITACAO NOT LIKE 'SA%'
       GROUP BY CLI.ID_CLIENTE)
    SELECT 'A. ABERTOS' QUANTIDADE,
                        query1.s JAN,
                        query2.s,
                        query1.id_cliente
    FROM query1
    INNER JOIN query2 ON (query1.ID_CLIENTE = query2.ID_CLIENTE);
    
19.11.2015 / 14:21