Jump to content

Question

!SQL.png.a85f7a9f892714c1f7c0a01e7a299135.png


Olá, boa tarde!

Estou precisando de uma ajuda em um SCRIPT (SQL).
Preciso agrupar o resultado por tipo de convênio (CONVENIO).

Exemplo Acima:
 

image.png.a1004edd334c3ab8d8cb817fd38e3d53.png

 

Total por tipo de convênio.

SET DATEFORMAT DMY -- RTM

declare 
@DTINI datetime, 
@DTFIM datetime

set @DTINI = '01/01/2019' 
set @DTFIM = '01/04/2019' 

SELECT 
        CASE 
        WHEN CONV_SUS  = 'T'
        THEN 
        'SUS'
        WHEN CONV_PARTICULAR = 'T'
        THEN        
        'PARTICULAR'
        WHEN CONV_DS IS NOT NULL
        THEN
        'CONVENIO'
        END CONVENIO,

CONSUMO2.INSU_DS INSUMO, 
replace(CONSUMO2.EMI_QTDE_COMERCIAL,'.',',') QTDE_COMERCIAL, 
replace(CONSUMO2.VAL_TOTAL,'.',',') VALOR_TOTAL

FROM  (      
SELECT CONSUMO.*
FROM (                                           
SELECT       

CONV_DS,
CONV_SUS,
CONV_PARTICULAR,

INSU_DS,                       
SUM(ISNULL(EMI_QTDE_COMERCIAL,0))   EMI_QTDE_COMERCIAL,  
ISNULL(SUM(ISNULL(EMI_QTDE_COMERCIAL,0) * ISNULL(PM,0)),0) VAL_TOTAL

FROM (     
 SELECT  CUREMI.*, 

(SELECT PCONV_DS    FROM PLANO_CONVENIO PCONV WHERE PCONV.PCONV_ID = CUREMI.PCONV_ID) PCONV_DS,  

(SELECT CONV_DS     FROM CONVENIO       CONV  WHERE CONV.CONV_ID =                            
(SELECT CONV_ID     FROM PLANO_CONVENIO PCONV WHERE PCONV.PCONV_ID = CUREMI.PCONV_ID) ) CONV_DS,        

(SELECT CONV_SUS    FROM CONVENIO       CONV  WHERE CONV.CONV_ID =                                          
(SELECT CONV_ID     FROM PLANO_CONVENIO PCONV WHERE PCONV.PCONV_ID = CUREMI.PCONV_ID) ) CONV_SUS,        

(SELECT CONV_PARTICULAR FROM CONVENIO       CONV  WHERE CONV.CONV_ID =                                      
(SELECT CONV_ID     FROM PLANO_CONVENIO PCONV WHERE PCONV.PCONV_ID = CUREMI.PCONV_ID) ) CONV_PARTICULAR

FROM(         
SELECT 
INSU_DS,
EMI.PCONV_ID,
EMI_QTDE_COMERCIAL,         
EMI.INSU_PRECO_MEDIO_FISCAL PM
FROM   EMISSAO EMI                 
JOIN   SERVICO SERV ON SERV.SERV_ID = EMI.SERV_ID 
JOIN   INSUMO  INSU ON INSU.SERV_ID = EMI.SERV_ID 
LEFT JOIN TIPO_EMISSAO TEMI ON EMI.TEMI_ID = TEMI.TEMI_ID 
LEFT JOIN ESTOQUE_LOTE ELOTE ON EMI.ELOTE_ID = ELOTE.ELOTE_ID 
WHERE EMI.ENTI_ID = 1
AND EMI_DT_DISPENSA >= @DTINI
AND EMI_DT_DISPENSA <  @DTFIM
AND INSU.INSU_ID IN (255651, 243116, 243116, 246708, 562, 250466, 413, 808)                    

UNION ALL                          
SELECT  
INSU_DS,
EMI.PCONV_ID,
EMI_QTDE_COMERCIAL,          
EMI.INSU_PRECO_MEDIO_FISCAL PM
FROM   ITENS_EMISSAO IEMI                            
JOIN   EMISSAO EMI  ON EMI.EMI_ID   = IEMI.EMI_ID  
JOIN   SERVICO SERV ON SERV.SERV_ID = IEMI.SERV_ID 
JOIN   INSUMO  INSU ON INSU.SERV_ID = IEMI.SERV_ID 
LEFT JOIN TIPO_EMISSAO TEMI ON EMI.TEMI_ID = TEMI.TEMI_ID 
LEFT JOIN ESTOQUE_LOTE ELOTE ON IEMI.ELOTE_ID = ELOTE.ELOTE_ID 
WHERE EMI.ENTI_ID = 1
AND EMI_DT_DISPENSA >= @DTINI
AND EMI_DT_DISPENSA <  @DTFIM
AND INSU.INSU_ID IN (255651, 243116, 243116, 246708, 562, 250466, 413, 808)
                       
UNION ALL                                            
SELECT  
INSU_DS,
EMI.PCONV_ID,
EMI_QTDE_COMERCIAL,              
EMI.INSU_PRECO_MEDIO_FISCAL PM
FROM   ESTORNO_EMISSAO EEMI                                                                   
JOIN   ESTORNO EST  ON EEMI.EST_ID = EST.EST_ID                                         
JOIN   EMISSAO EMI  ON EMI.EMI_ID =  EEMI.EMI_ID                                        
JOIN   SERVICO SERV ON SERV.SERV_ID = EMI.SERV_ID 
JOIN   INSUMO  INSU ON INSU.SERV_ID = EMI.SERV_ID 
LEFT JOIN TIPO_EMISSAO TEMI ON EMI.TEMI_ID = TEMI.TEMI_ID 
LEFT JOIN ESTOQUE_LOTE ELOTE ON EEMI.ELOTE_ID = ELOTE.ELOTE_ID 
WHERE EMI.ENTI_ID = 1
AND EMI_DT_DISPENSA >= @DTINI
AND EMI_DT_DISPENSA <  @DTFIM
AND INSU.INSU_ID IN (255651, 243116, 243116, 246708, 562, 250466, 413, 808)                   

UNION  ALL                                                                                    
SELECT  
INSU_DS,
EMI.PCONV_ID,
EMI_QTDE_COMERCIAL,               
EMI.INSU_PRECO_MEDIO_FISCAL PM
FROM ESTORNO_ITENS_EMISSAO ESTI                                                             
JOIN ESTORNO       EST  ON ESTI.EST_ID  = EST.EST_ID   
JOIN ITENS_EMISSAO IEMI ON IEMI.IEMI_ID = ESTI.IEMI_ID 
JOIN EMISSAO       EMI  ON EMI.EMI_ID   = IEMI.EMI_ID  
JOIN SERVICO       SERV ON SERV.SERV_ID = IEMI.SERV_ID 
JOIN INSUMO        INSU ON INSU.SERV_ID = IEMI.SERV_ID 
LEFT JOIN TIPO_EMISSAO TEMI ON EMI.TEMI_ID = TEMI.TEMI_ID 
LEFT JOIN ESTOQUE_LOTE ELOTE ON ESTI.ELOTE_ID = ELOTE.ELOTE_ID 
WHERE EMI.ENTI_ID = 1
AND EMI_DT_DISPENSA >= @DTINI
AND EMI_DT_DISPENSA <  @DTFIM
AND INSU.INSU_ID IN (255651, 243116, 243116, 246708, 562, 250466, 413, 808)) CUREMI  
) CURCC  

GROUP BY  INSU_DS, CONV_DS, CONV_SUS, CONV_PARTICULAR
) CONSUMO                                    
) CONSUMO2 
ORDER BY 2, 1

 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By johnklo
      COM BASE NA TABELA HR DO ORACLE
      Preciso criar uma sub-rotina (procedure) que imprima na tela o número de funcionários (employees) agrupados por departamentos (department_id). Deve-se ordenar a saída em ordem decrescente pela quantidade de departamentos. Pode-se utilizar qualquer forma de cursor para imprimir o resultado.
    • By c3s1nha
      Boa tarde,
       
      Preciso restaurar a estrutura de um banco de dados (tabelas,views,procedures.. etc) em outro banco de dados que esta vazio (nao tem tabela nenhuma, banco novo), utilizo o sql server. Consigo fazer utilizando o SSMS ?
       
      Para entender melhor estou enviando uma imagem.
       
       
      O banco com todas tabelas,viwes,procedures, registros, etc..  é o Guara_ que esta no servidor   .\SQLEXPRESS   quero fazer uma copia identica dele no banco Nutri no servidor sdb.hsi.
       
      Desde ja agradeço. 

    • By alanbr00
      Olá,
       
      estou tendo dificuldade na instalação, nunca vi esse erro. Estou pensando seriamente em formatar.
       
      Esse é o log.
       
       


    • By PierreMoraes
      Olá a todos sou novo no grupo porem ja peguei muita solução aqui no forum.
      Gostaria da ajude devocês pois estou com uma dificuldade em meu site. Tenho um painel ADMININSTRATIVO em meu site e tenho aceso a visão de algumas coisas dos usuarios como quantidade de logins, nivel de acesso, nome, sobrenome, email e outras coisas refetente ao conteúdo do site.
      Ai vem minha dúvida preciso pegar o IP dos usuarios no meu banco de dados e sim ja tenho essa função, porem ele fica misturado com de todos outros, montei o mesmo para visualização dos ultimos 8 aceessos com data assim:
       
      <tbody> <?php $qnt_result_pg = 8; $stmtt=$bdd->prepare("SELECT * FROM vanguard_singin WHERE name_user=? ORDER BY id desc LIMIT $qnt_result_pg"); $stmtt->execute(array($_SESSION['vg_usern'])); while($rowip=$stmtt->fetch(PDO::FETCH_ASSOC)) { ?> <tr> <td><?php echo $rowip['ip']; ?></td> <?php $source = $rowip['dt_log']; $date = new DateTime($source); ?> <td><?php echo $date->format('d/m/Y G:y'); ?></td> </tr> <?php } ?> </tbody> e funciona perfeito porem preciso implementar essa função no meu painel, lembrando que esse código acima ele serve apenas para o proprio usuario visualizar.
       
      ESSE É DO PAINEL
      <tbody> <?php $query = "SELECT * FROM vanguard_users"; $stmt = $bdd->prepare( $query ); $stmt->execute(); while($row_usuario=$stmt->fetch(PDO::FETCH_ASSOC)) { $result_items2 = $bdd->query('SELECT count(1) FROM vanguard_items WHERE author="' .$row_usuario['usern']. '"'); $row_items2 = $result_items2->fetch(); $total_items2 = $row_items2[0]; $result_follow = $bdd->query("SELECT count(1) FROM vanguard_follow WHERE id_following = {$row_usuario['id']}"); $row_follow = $result_follow->fetch(); $total_follow = $row_follow[0]; $result_follower = $bdd->query("SELECT count(1) FROM vanguard_follow WHERE id_follower = {$row_usuario['id']}"); $row_follower = $result_follower->fetch(); $total_follower = $row_follower[0]; extract($row_usuario); $name_user = $row_usuario['usern']; $result_ip = $bdd->prepare('SELECT COUNT(ip) FROM vanguard_singin WHERE name_user = "' .$row_usuario['usern']. '"'); $result_ip->execute(array($name_user)); $result_ip = $result_ip->fetchColumn(); ?> <tr class="odd gradeX"> <td width="1%" class="f-s-600 text-white-transparent-8"> <?php echo $row_usuario['id']; ?> </td><!-- ID --> <td width="1%" class="with-img"> <img src="<?= $url; ?>static/img/avatars/<?php echo $row_usuario['avatar']; ?>" class="img-rounded height-30" /> </td><!-- PHOTO --> <td> <?php echo $row_usuario['usern']; ?> </td><!-- USERNAME --> <td> <?php echo $row_usuario['lname']; ?> </td><!-- NOME --> <td> <?php echo $row_usuario['fname']; ?> </td><!-- SOBRENOME --> <td> <?php if ($row_usuario['role'] == "1") { echo '<h5 class="text1">'.$lang['CLASS_01'].'<h5>'; } elseif ($row_usuario['role'] == "2") { echo '<h5 class="text2">'.$lang['CLASS_02'].'<h5>'; } elseif ($row_usuario['role'] == "3") { echo '<h5 class="text3">'.$lang['CLASS_03'].'<h5>'; } elseif ($row_usuario['role'] == "4") { echo '<h5 class="text4">'.$lang['CLASS_04'].'<h5>'; } elseif ($row_usuario['role'] == "5") { echo '<h5 class="text5">'.$lang['CLASS_05'].'<h5>'; } elseif ($row_usuario['role'] == "6") { echo '<h5 class="text6">'.$lang['CLASS_06'].'<h5>'; } elseif ($row_usuario['role'] == "7") { echo '<h5 class="text7">'.$lang['CLASS_07'].'<h5>'; } else { echo '<h5 class="">'.$lang['CLASS_00'].'<h5>'; }; ?> </td><!-- NIVEL DE ACESSO --> <td> <?php echo $row_usuario['created']; ?> </td><!-- DATA DE CRIAÇÃO --> <td> <?php echo $row_usuario['email']; ?> </td><!-- EMAIL --> <td> <?php echo $row_usuario['quotas']; ?> </td><!-- QUOTA DE POSTS --> <td> <?php echo $row_ip['ip']; ?> </td><!-- IP --> <td> <?php if ($total_items2 == 0) { ?>0<?php } ?><?php if ($total_items2 > 0) { ?><?php echo $total_items2; ?><?php } ?> </td><!-- ITENS POSTADOS NA PAGINA DOWNS --> <td> <?php echo $total_follower; ?> </td><!-- SEGUINDO --> <td> <?php echo $total_follow; ?> </td><!-- SEGUIDOR --> <td> <?php echo $result_ip; ?> </td><!-- LOGINS TOTAL --> <td class="with-btn" nowrap> <a href="<?= $url; ?>edit_usuario/<?php echo $row_usuario['id']; ?>" class="btn btn-sm btn-primary width-60 m-r-2">Editar</a> <?php if ($row_usuario['status'] == "2") { ?> <a href="<?= $url; ?>edit_ban/<?php echo $row_usuario['id']; ?>" class="btn btn-sm btn-warning">DesBanir</a> <?php }else{ ?> <a href="<?= $url; ?>edit_ban/<?php echo $row_usuario['id']; ?>" class="btn btn-sm btn-danger">Banir</a> <?php } ?> </td><!-- OPÇÕES DE EDITAR E BANIR --> </tr> <?php } ?> </tbody> Só deixar claro aqui sei que ninguém aqui é leigo mais para adiantar e talvez não haver confusão:
       
      Esse inicio de código seria o que chama a tabela dos usuários e seus dados: 
       $query = "SELECT * FROM vanguard_users";
                                              $stmt = $bdd->prepare( $query );
                                              $stmt->execute();
                                              while($row_usuario=$stmt->fetch(PDO::FETCH_ASSOC))
                                              {
       
      Essa segunda parte é uma segunda tabela onde chama algumas informações referente á um serviço do site:
      $result_items2 = $bdd->query('SELECT count(1) FROM vanguard_items WHERE author="' .$row_usuario['usern']. '"');
                                                  $row_items2 = $result_items2->fetch();
                                                  $total_items2 = $row_items2[0];
       
      Essa terceira parte chama outra tabela e informa outros dados referente ao perfil do usuario:
      $result_follow = $bdd->query("SELECT count(1) FROM vanguard_follow WHERE id_following = {$row_usuario['id']}");
                                                  $row_follow = $result_follow->fetch();
                                                  $total_follow = $row_follow[0];
       
      $result_follower = $bdd->query("SELECT count(1) FROM vanguard_follow WHERE id_follower = {$row_usuario['id']}");
                                                  $row_follower = $result_follower->fetch();
                                                  $total_follower = $row_follower[0];
       
       
      Essa quarta parte chama a quantidade de logins do usuario :
      Obs que esse é a mesma TABELA que preciso acessar para ver o IP do usuário porem ele só contabiliza os IP do mesmo usuário e soma assim dando a quantidade de logins no site.
       
      extract($row_usuario);
                                                  
                                                  $name_user = $row_usuario['usern'];
                                                  $result_ip = $bdd->prepare('SELECT COUNT(ip) FROM vanguard_singin WHERE name_user = "' .$row_usuario['usern']. '"');
                                                  $result_ip->execute(array($name_user));
                                                  $result_ip = $result_ip->fetchColumn();
       
      Preciso dessa mesma tabela visualizar os ultimos logins e me informar o IP como mostro no inicio da publicação.
      Quem puder ajudar agradeço muitissímo.
      Abraço a todos e um ótimo final de semana.
    • By alextds
      Tenho as seguintes tabelas com os dados:
          table_ent                                            |   table_out
          cod_prod   date_ent     vl_prod       |   cod_prod   date_out       vl_prod  
          362        14/09/2015   100,00         |   362        01/10/2016     700,00
          362        15/09/2015   150,00         |   362        07/10/2016     800,00
          362        16/09/2015   10,00           |   362        29/10/2016     100,00
          362        05/10/2016   20,00           |   362        01/10/2016     800,00       
          362        06/10/2016   300,00         |
          362        07/10/2016   460,00         |
          362        08/10/2016   510,00         |
          362        23/10/2016   620,00         |
          362        24/10/2016   750,00         |
          362        25/10/2016   810,00         |
          362        30/10/2019   920,00         |
       
       
      Usei um inner join com max(date)  porém o resultado gerado foi esse :
          cod_ent  date_out   vl_ent      cod_ent  vl_ent  date_ent
          ------          --------         ------            ---          ---          -------
          362         01/10/16    700         362       100      14/09/15
          362         01/10/16    800         362       10      16/09/15
          362         01/10/16    700         362       150      15/09/15
          362         01/10/16    700         362       10      16/09/15
          362         01/10/16    800         362       150      15/09/15
          362         01/10/16    800         362       100      14/09/15
          362         07/10/16    100         362       20      05/10/16
          362         07/10/16    100         362       300      06/10/16
          362         07/10/16    100         362       100      14/09/15
          362         07/10/16    100         362      10      16/09/15
          362         07/10/16    100         362      150      15/09/15
          362         29/10/16    920         362      510      08/10/16
          362         29/10/16    920         362      750      24/10/16
          362         29/10/16    920         362      460      07/10/16
          362         29/10/16    920         362      10      16/09/15
       
      Preciso obter este resultado abaixo :
          cod_ent  date_out   vl_ent   cod_ent  vl_ent  date_ent
          ------   --------   ------   ---      ---     -------
          362         01/10/16    700         362      100      14/09/15
          362         01/10/16    800         362      10      16/09/15
          362         07/10/16    100         362      20      06/10/16
          362         29/10/16    920         362      750      25/10/16
       
      estou usando o seguinte script:
      select a.cod_prod, a.date_out, a.vl_prod, sum(b.cod_prod) as cod_prod, sum(b.vl_prod) vl_prod, max(b.date_ent) as date_ent
      from table_out a
      join table_ent b on b.cod_prod = a.cod_prod and b.date_ent < a.date_out
      group by a.cod_prod, a.date_out, b.cod_prod, a.vl_prod, b.vl_prod
      order by a.cod_prod, a.date_out;
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.