Ir para conteúdo
  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por jackvinte
      Olá, sou nova por aqui.
       
      É possível fazer um select join dentro de um case, segue o que preciso:
       
      select m.ArquivoOrdemMov,m.ContadorAgenteMov,m.DataMov,m.SeqOrdemMov,m.SeqProduto,m.SaldoTotalMov,p.DescricaoProduto --,case when m.ArquivoOrdemMov='OC'then 'Preço' /*dentro do then preciso pegar o preço ->select ci.CustoOCItem from OCItem ci join OC c on c.SeqOC=ci.SeqOC*/ --else 'Sem valor'end from Mov m join MovFisica f on m.SeqMovFisica=f.SeqMovFisica join OC c on m.ContadorAgenteMov=c.ContadorAgenteOC join Produto p on m.SeqProduto=p.SeqProduto where m.ArquivoOrdemMov='OC' and c.SituacaoOC='FECHADA'  
    • Por SAS Junior
      Olá, sou novo aqui e em SQL Server, estou com um problema para buscar um resultado. 
      Caso hoje seja segunda, trazer as instalações dos últimos 3 dias (sexta, sábado e domingo), caso não seja, trazer só os de ontem, tentei da forma abaixo e muitas outras e não consegui, desde já agradeço.    
      SELECT codigoCliente AS [CÓD], CpfCnpj AS [CPF/CNPJ] ,NomeFantasia as [NOME FANTASIA] ,UPPER(NomeContato) as [NOME DE CONTATO] ,CASE WHEN CLI.DDDCelular IS NULL THEN 'NÃO TEM' ELSE DDDCelular END AS [DDD CEL] ,CASE WHEN Celular IS NULL THEN 'NÃO TEM' ELSE Celular END AS CELULAR ,CASE WHEN DDDTelefone IS NULL THEN 'NÃO TEM' ELSE DDDTelefone END AS [DDD TEL] ,CASE WHEN Telefone IS NULL THEN 'NÃO TEM' ELSE Telefone END AS TELEFONE ,DataInstalacao AS [INSTALAÇÃO] ,DATEPART(weekday,DataInstalacao) as [DIASEMANA] ,UPPER(Departamento) AS [DEPTO CAD] ,upper(UsuarioCadastro) as [CADASTRADO POR] ,CASE WHEN UPPER(EMAIL) IS NULL THEN 'NÃO TEM EMAIL' ELSE UPPER(EMAIL) END AS EMAIL FROM CLIENTE WHERE (CASE WHEN (DATEPART(weekday,GETDATE()) = '2' THEN DATEPART(DAY, DataInstalacao) >= DATEPART(DAY, GETDATE()-3) ELSE DATEPART(DAY, DataInstalacao) = DATEPART(DAY, GETDATE()-1) END) AND MONTH(DataInstalacao) = MONTH(GETDATE()) AND YEAR(DataInstalacao) = YEAR(GETDATE()) AND Situacao = 'MAQUINA INSTALADA'  
    • Por Luiz Henrique
      Tenho uma consulta entre várias tabelas, e 2 das clausulas é soma. Essa funciona SUM(t3.valor_servico*t3.quantidade)... Com essa junta não. SUM(CASE WHEN tab1.codigo = tab2.codigo THEN tab2.valor END) AS valor_pago Tentei fazer igual a de cima mas não rolou, então li a respeito do CASE, e tentei isso acima.
       
      Ocorre que o sistema tem opção de efetuar vários pagamentos em datas diferentes até que o valor total seja quitado.
      No caso, tenho uma tabela para armazenar o valor pago(valor), quem pagou (codigo) entre outras coisas, denominada como tab2 e a tab1 com outras informações, e o codigo.
       
      Não sei se é possível, mas estou precisando que esses 2 SUM estejam na mesma consulta porque fiz a condição acima sozinha para teste e funciona, então não faço ideia do que ocorre.
       
      o sql inteiro é esse, e preciso somar a  quantidade paga de cada ticket.
       
      $sql = mysqli_query($conexao, "SELECT *, SUM(st.valor_servico*st.quantidade) AS soma_servico FROM ticket t JOIN clientes c ON t.id_cliente = c.id_cliente JOIN servico_ticket st ON t.id_ticket = st.id_ticket JOIN status sts ON sts.id_status = t.status JOIN usuarios us ON us.id_user = t.atendente JOIN pagamento_ticket pgt WHERE t.id_loja ".$condLoja." AND ".$acao_status." GROUP BY t.id_ticket")or die (mysqli_error()); Obrigado.
       
    • Por ronimarcos.silva
      Como faço para usar o Case com o "In", por exemplo no caso abaixo?
      (case gope.cd_grp_operat when 1 then 1 when 3 then 1 when 15 then 1 when 25 then 1 when 35 then 1 when 45 then 1 when 55 then 1 else 99 end ) ib_controla_km, -- Eu posso fazer asism? (case gope.cd_grp_operat when in (1, 3, 15, 25, 35, 45, 55) else 99 end ) ib_controla_km, Ou assim, aninhando o (1, 3, 45) dentro de um "IN": 
       
      (case gope.cd_grp_operat when gope.cd_grp_operat = 1 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 2 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 45 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) )else 0 end)f_km_inicial,  
    • Por igor.js167
      Boa tarde,
       
      No banco de dados tenho as informações a seguir, em diferentes tabelas: Acesso,  Dose prescrita, tempo e volume. Preciso, de acordo com essas informações, calcular dois valores chamados bolus e rate seguindo uma condicional. O problema é como vou retornar estes dois valores, se não tem atributo onde eu possa inseri-los?
       
      Eu deveria criar uma nova tabela pra eles? Existe como retornar estes atributos sem ter de mexer em nenhuma tabela?
      O código atual que tenho, é:
      select a.nr_atendimento ATENDIMENTO, obter_nome_pf_atend(a.nr_atendimento) NOME, obter_data_nascto_pac_atend(a.nr_atendimento) NASCIMENTO, 'DOSE: ' || decode(a.qt_dose,',5','2.500 UI','1','5.000 UI','1,5','7.500 UI','2','10.000 UI','2,5','12.500 UI','3','15.000 UI','3,5','17.500 UI', '4','20.000 UI','4,5','22.500 UI','5','25.000 UI','5,5','27.500 UI','6','30.000 UI') DOSE, 'VOLUME: ' || a.qt_volume || ' ml' VOLUME, obter_desc_material(a.cd_material) MEDICAMENTO, d.qt_hora_min_sessao TEMPO, e.nr_seq_tecnica ACESSO -- Inserir aqui condicionais para cálculo de BOLUS e RATE from CPOE_material a, atend_paciente_unidade b, hd_escala_dialise c, cpoe_dialise d, hd_acesso e where a.cd_material = 49749 and a.nr_atendimento = b.nr_atendimento and d.nr_atendimento = b.nr_atendimento and obter_cd_pes_fis_atend(b.nr_atendimento) = c.cd_pessoa_fisica and b.dt_saida_unidade is null and a.dt_liberacao is not null and a.dt_suspensao is null and d.dt_liberacao is not null and d.dt_suspensao is null and c.dt_fim is null and e.cd_pessoa_fisica = obter_pessoa_atendimento(b.nr_atendimento,'C') and e.ie_adequado = 'S' and e.dt_perda_retirada is null and c.nr_seq_turno = :turno and c.nr_seq_escala = :escala E as condicionais que quero inserir é mais ou menos assim:
      SE acesso arteriovenoso então: se dose_prescrita = 2500 então bolus = volume e rate = '-' se dose_prescrita = 5000 então: se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 6,0 e rate = 1,6 se tempo = 3:30h ou 3:35 então Bolus = 6,0 e rate = 1,3 se tempo = 4:00 ou 4:05h então bolus = 6,0 e rate = 1,1 se dose_prescrita = 7500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 8,0 e rate = 2,8 se tempo = 3:30h ou 3:35 então Bolus = 8,0 e rate = 2,3 se tempo = 4:00 ou 4:05h então bolus = 8,0 e rate = 2,0 se dose_prescrita = 10000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 10,0 e rate = 4,0 se tempo = 3:30h ou 3:35 então Bolus = 10,0 e rate = 3,3 se tempo = 4:00 ou 4:05h então bolus = 10,0 e rate = 2,9 se dose_prescrita = 12500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 11,0 e rate = 5,6 se tempo = 3:30h ou 3:35 então Bolus = 11,0 e rate = 4,7 se tempo = 4:00 ou 4:05h então bolus = 11,0 e rate = 4,0 se dose_prescrita = 15000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 13,0 e rate = 6,8 se tempo = 3:30h ou 3:35 então Bolus = 13,0 e rate = 5,7 se tempo = 4:00 ou 4:05h então bolus = 13,0 e rate = 4,9 se dose_prescrita = 30000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 23,0 e rate = 14,8 se tempo = 3:30h ou 3:35 então Bolus = 23,0 e rate = 12,3 se tempo = 4:00 ou 4:05h então bolus = 23,0 e rate = 10,6 se não então null SE acesso cateter então: se dose_prescrita = 2500 então bolus = volume e rate = '-' se dose_prescrita = 5000 então: se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 6,0 e rate = 1,3 se tempo = 3:30h ou 3:35 então Bolus = 6,0 e rate = 1,1 se tempo = 4:00 ou 4:05h então bolus = 6,0 e rate = 1,0 se dose_prescrita = 7500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 8,0 e rate = 2,3 se tempo = 3:30h ou 3:35 então Bolus = 8,0 e rate = 2,0 se tempo = 4:00 ou 4:05h então bolus = 8,0 e rate = 1,8 se dose_prescrita = 10000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 10,0 e rate = 3,3 se tempo = 3:30h ou 3:35 então Bolus = 10,0 e rate = 2,9 se tempo = 4:00 ou 4:05h então bolus = 10,0 e rate = 2,5 se dose_prescrita = 12500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 11,0 e rate = 4,7 se tempo = 3:30h ou 3:35 então Bolus = 11,0 e rate = 4,0 se tempo = 4:00 ou 4:05h então bolus = 11,0 e rate = 3,5 se dose_prescrita = 15000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 13,0 e rate = 5,7 se tempo = 3:30h ou 3:35 então Bolus = 13,0 e rate = 4,9 se tempo = 4:00 ou 4:05h então bolus = 13,0 e rate = 4,3 se dose_prescrita = 30000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 23,0 e rate = 12,3 se tempo = 3:30h ou 3:35 então Bolus = 23,0 e rate = 10,6 se tempo = 4:00 ou 4:05h então bolus = 23,0 e rate = 9,3 Atenciosamente,
      Igor
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.