Daniel Oliveira Postado 18 de Fevereiro de 2021 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 18 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 133 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 25 Denunciar Compartilhar Postado 18 de Fevereiro de 2021 Boa tarde, Tenho uma consulta e estou tendo uma certa dificuldade para colocar a condição where para o (select case .. vou colocar a consulta e o where que pensei para colocar junto com o case segue a mesma: SELECT FCFO.NOME, FLAN.DATAVENCIMENTO, FLAN.DATABAIXA, (SELECT CASE WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '03/21/2016' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '02', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.52 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '03/21/2016' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.81 ELSE FLAN.VALORBAIXADO END) AS 'VALOR PAGO', FLAN.CNABNOSSONUMERO AS 'NOSSO NUMERO', '109' AS CARTEIRA, FLAN.CODTDO, FLAN.HISTORICO, FLAN.IDBOLETO, CASE FLAN.STATUSLAN WHEN 0 THEN 'EM ABERTO' WHEN 1 THEN 'BAIXADO' WHEN 2 THEN 'CANCELADO' WHEN 3 THEN 'BAIXADO POR ACORDO' WHEN 4 THEN 'BAIXADO PARCIALMENTE' WHEN 5 THEN 'BORDERO' END AS STATUS, ( CASE WHEN FLAN.CODCXA = '01' THEN '10378-8 (Itaú)' WHEN FLAN.CODCXA = '02' THEN '08771-8 (Itaú CT)' WHEN FLAN.CODCXA = '03' THEN '15400-0 (Itaú ICTQ)' WHEN FLAN.CODCXA = '04' THEN 'DINHEIRO' WHEN FLAN.CODCXA = '05' THEN '27837-4 (Itaú Cursos)' WHEN FLAN.CODCXA = '07' THEN '34200-6' WHEN FLAN.CODCXA = '08' THEN '580266-3 (Safra CT)' WHEN FLAN.CODCXA = '09' THEN '580283-3 (Safra ICTQ)' WHEN FLAN.CODCXA = '10' THEN '580284-1 (Safra Cursos)' WHEN FLAN.CODCXA = '11' THEN 'PAG SEGURO' END ) AS 'CONTA/CAIXA', GCCUSTO.NOME AS 'CENTRO DE CUSTO' FROM FLAN INNER JOIN GCCUSTO ON FLAN.CODCOLIGADA = GCCUSTO.CODCOLIGADA AND FLAN.CODCCUSTO = GCCUSTO.CODCCUSTO LEFT JOIN FCFO ON FCFO.CODCOLIGADA = FLAN.CODCOLIGADA AND FCFO.CODCFO = FLAN.CODCFO WHERE DATAVENCIMENTO BETWEEN :VENCIMENTO_INICIAL AND :VENCIMENTO_FINAL AND FLAN.PAGREC = 1 AND GCCUSTO.NOME LIKE :CIDADE AND DATABAIXA BETWEEN :BAIXA_INICIAL AND :BAIXA_FINAL AND FLAN.VALORBAIXADO <> 0 AND CODTDO IN ('BOL','BOLETOPS','REND','TRANSBANC','CARTCRED') AND STATUSLAN = 1 Estou querendo colocar a condição dentro do select case, como a condição de que a partir da data: X o valores de calculo muda para mais: segue a parte que gostaria de coloca como condição que eu estou com dificuldade: WHERE CASE WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.54 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/09/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '02' THEN FLAN.VALORBAIXADO + 1.45 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.84 ELSE FLAN.VALORBAIXADO Poderia me da uma ajuda ? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
luisgustavogomes Postado 18 de Fevereiro de 2021 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 484 Conteúdo/Dia: 0.21 Reputação: 136 Pontos/Conquistas: 3.226 Conteúdo Resolvido: 0 Dias Ganho: 64 Status: Offline Idade: 35 Dispositivo: Windows Denunciar Compartilhar Postado 18 de Fevereiro de 2021 @Daniel Oliveira , boa tarde! Vamos tentar lhe ajudar... porém, necessitamos entender melhor a sua demanda... você que filtrar pelo cálculo do seu valor líquido é isso ? Outra pergunta é MSSQLServer o banco ? Ficamos no aguardo. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Daniel Oliveira Postado 19 de Fevereiro de 2021 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 18 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 133 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 25 Autor Denunciar Compartilhar Postado 19 de Fevereiro de 2021 Bom dia Luis, estou tentando filtra pela data baixada e preciso colocar uma condição porque a partir desse mesmo os valores a serem calculado para os boleto uns aumentaram e um abaixo, a syntax logo abaixa é a que temo hoje e usamos ela no CUBO. (SELECT CASEWHEN FLAN.DATABAIXA IS NOT NULLAND FLAN.DATABAIXA >= '03/21/2016'AND FLAN.CODAPLICACAO = 'S'AND FLAN.VALORBAIXADO <> '0.00'AND FLAN.CODCXA IN( '01', '02', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.52WHEN FLAN.DATABAIXA IS NOT NULLAND FLAN.DATABAIXA >= '03/21/2016'AND FLAN.CODAPLICACAO = 'S'AND FLAN.VALORBAIXADO <> '0.00'AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.81ELSE FLAN.VALORBAIXADOEND) AS 'VALOR PAGO', só que eu preciso que essa consulta faça também esses mesmo cálculos com a syntax logo abaixo: WHERE CASE WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.54 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/09/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '02' THEN FLAN.VALORBAIXADO + 1.45 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.84 O banco que estou estou usando é o MSSQLServer, desde já agradeço se poder me ajudar ! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
luisgustavogomes Postado 19 de Fevereiro de 2021 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 484 Conteúdo/Dia: 0.21 Reputação: 136 Pontos/Conquistas: 3.226 Conteúdo Resolvido: 0 Dias Ganho: 64 Status: Offline Idade: 35 Dispositivo: Windows Denunciar Compartilhar Postado 19 de Fevereiro de 2021 @Daniel Oliveira, boa tarde! Na cláusula where o teste tem que ser uma condição booleana, por exemplo: SELECT * FROM GCOLIGADA WHERE CODCOLIGADA = ( CASE WHEN 1=1 THEN 1 ELSE 0 END ) Nesse exemplo, o case irá retornar um valor que você pode testar... com os operadores de comparação e/ou lógicos... logo, faz esse teste aqui... WHERE FLAN.VALORBAIXADO = CASE WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.54 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/09/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '02' THEN FLAN.VALORBAIXADO + 1.45 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.84 Mas como concelho, acredito que uma CTE e/ou CROSS APPLY ira lhe atender melhor. abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Daniel Oliveira Postado 19 de Fevereiro de 2021 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 18 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 133 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 25 Autor Denunciar Compartilhar Postado 19 de Fevereiro de 2021 @luisgustavogomes boa tarde, aparentemente ainda tá tendo algum erro que não consegui identificar, segue o print para tu chegar: essa seria a maneira correta de colocar a where ? e se eu usar só a condição when funcionaria também ? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Daniel Oliveira Postado 19 de Fevereiro de 2021 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 18 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 133 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 25 Autor Denunciar Compartilhar Postado 19 de Fevereiro de 2021 Pessoal consegui fazer com que funcionasse corretamente, a consulta ficou da seguinte forma: SELECT FCFO.NOME, FLAN.DATAVENCIMENTO, FLAN.DATABAIXA, (SELECT CASE WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA <= '02/07/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '02', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.52 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA IN( '01', '03', '07' ) THEN FLAN.VALORBAIXADO + 1.54 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/09/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '02' THEN FLAN.VALORBAIXADO + 1.45 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA <= '02/07/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.81 WHEN FLAN.DATABAIXA IS NOT NULL AND FLAN.DATABAIXA >= '02/08/2021' AND FLAN.CODAPLICACAO = 'S' AND FLAN.VALORBAIXADO <> '0.00' AND FLAN.CODCXA = '05' THEN FLAN.VALORBAIXADO + 1.84 ELSE FLAN.VALORBAIXADO END) AS 'VALOR PAGO', FLAN.CNABNOSSONUMERO AS 'NOSSO NUMERO', '109' AS CARTEIRA, FLAN.CODTDO, FLAN.HISTORICO, FLAN.IDBOLETO, CASE FLAN.STATUSLAN WHEN 0 THEN 'EM ABERTO' WHEN 1 THEN 'BAIXADO' WHEN 2 THEN 'CANCELADO' WHEN 3 THEN 'BAIXADO POR ACORDO' WHEN 4 THEN 'BAIXADO PARCIALMENTE' WHEN 5 THEN 'BORDERO' END AS STATUS, ( CASE WHEN FLAN.CODCXA = '01' THEN '10378-8 (Itaú)' WHEN FLAN.CODCXA = '02' THEN '08771-8 (Itaú CT)' WHEN FLAN.CODCXA = '03' THEN '15400-0 (Itaú ICTQ)' WHEN FLAN.CODCXA = '04' THEN 'DINHEIRO' WHEN FLAN.CODCXA = '05' THEN '27837-4 (Itaú Cursos)' WHEN FLAN.CODCXA = '07' THEN '34200-6' WHEN FLAN.CODCXA = '08' THEN '580266-3 (Safra CT)' WHEN FLAN.CODCXA = '09' THEN '580283-3 (Safra ICTQ)' WHEN FLAN.CODCXA = '10' THEN '580284-1 (Safra Cursos)' WHEN FLAN.CODCXA = '11' THEN 'PAG SEGURO' END ) AS 'CONTA/CAIXA', GCCUSTO.NOME AS 'CENTRO DE CUSTO' FROM FLAN INNER JOIN GCCUSTO ON FLAN.CODCOLIGADA = GCCUSTO.CODCOLIGADA AND FLAN.CODCCUSTO = GCCUSTO.CODCCUSTO LEFT JOIN FCFO ON FCFO.CODCOLIGADA = FLAN.CODCOLIGADA AND FCFO.CODCFO = FLAN.CODCFO WHERE DATAVENCIMENTO BETWEEN :VENCIMENTO_INICIAL AND :VENCIMENTO_FINAL AND FLAN.PAGREC = 1 AND GCCUSTO.NOME LIKE :CIDADE AND DATABAIXA BETWEEN :BAIXA_INICIAL AND :BAIXA_FINAL AND FLAN.VALORBAIXADO <> 0 AND CODTDO IN ( 'BOL', 'BOLETOPS', 'REND', 'TRANSBANC', 'CARTCRED' ) AND STATUSLAN = 1 ao tentar fazer o WHERE, eu parti do pressuposto que daria certo fazer a condição pelo when e mudar o paramento de busca no >= ou <= assim delimita a consulta fazer a busca da forma que foi repassada a demanda, caso tenha uma forma melhor de se fazer, fico muito grato se me repassar o conhecimento, e deis de já agrade a ajuda @luisgustavogomes 1 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
luisgustavogomes Postado 19 de Fevereiro de 2021 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 484 Conteúdo/Dia: 0.21 Reputação: 136 Pontos/Conquistas: 3.226 Conteúdo Resolvido: 0 Dias Ganho: 64 Status: Offline Idade: 35 Dispositivo: Windows Denunciar Compartilhar Postado 19 de Fevereiro de 2021 Blz. 1 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.