SELECT com dois COUNT dando erro

06/03/2015

0

SQL

Pessoal,

Tenho que fazer uma consulta estre duas datas, sendo que em coluna_data_1 são todos os eventos que ocorreram na semana e em coluna_data_2 são os eventos que tiveram algum tipo de tratamento, este campo recebe a data que o evento foi tratado. Os eventos devem ser tratados na mesma semana que ocorreram, a idéia e trazer a porcentagem de eventos tratados.

Ps. O tratamento das informações será realizado via PHP; Ex. ( VARIAVEL2 / VARIAVEL1 )

Estou tentando o comando abaixo, porém o Select está apresentando erro. Já tentei utilizando CASE mas não funcionou também. Estou utulizando o Access 2010.

SELECT
  (SELECT COUNT(coluna_data_1) FROM Tabela_data WHERE coluna_data_1 BETWEEN #17/02/2015# AND #23/02/2015#) AS VARIAVEL1,
  (SELECT COUNT(coluna_data_2) FROM Tabela_data WHERE coluna_data_2 BETWEEN #17/02/2015# AND #23/02/2015# AND coluna_data_1 BETWEEN #17/02/2015# AND #23/02/2015#) AS VARIAVEL2


Valeu!
Juliano

Juliano

Responder

Posts

07/03/2015

Marisiana Battistella

Olá Juliano!
Talvez essa solução seja o que você precisa:
 select count(td.coluna_data_1) as variavel_1,
        count(td.coluna_data_2) as variavel_2
 from tabela_data td
 where td.coluna_data_1 between '17/02/2015' and '23/02/2015'
 and td.coluna_data_2 between '17/02/2015' and '23/02/2015'

Não cheguei a testar, então pode ser que tenha algum erro...
Qualquer coisa me informe q posso rever o código..
Responder

08/03/2015

Lucas Ramos

A forma que a Marisiana passou não está incorreto, porém dependendo de como é alimentado os campos pode ocorrer de não retornar nenhum valor.

Segue minha sugestão

select count(d1.coluna_data_1) as variavel_1,
         count(d2.coluna_data_2) as variavel_2
 from tabela_data d1,
         tabela_data d2
where d1.coluna_data_1 between '17/02/2015' and '23/02/2015'
   and d2.coluna_data_2 between '17/02/2015' and '23/02/2015'
Responder

08/03/2015

Lucas Ramos

Outra opção que pode ser usada, mas acredito que seja XTremeGoHorse kkkkk

Lembrando que essa sintaxe é para o SQL Server não sei se vai funcionar no Access então sugiro utilizar o modo que passei antes.

  declare @Data1 date
  declare @Data2 date
  
  set @Data1 = (SELECT COUNT(coluna_data_1) FROM Tabela_data WHERE coluna_data_1 BETWEEN #17/02/2015# AND #23/02/2015#) 
  set Data2 =  (SELECT COUNT(coluna_data_2) FROM Tabela_data WHERE coluna_data_2 BETWEEN #17/02/2015# AND #23/02/2015# AND coluna_data_1 BETWEEN #17/02/2015# AND #23/02/2015#) 
  
  select @Data1 as variavel_1,
           @Data2 as variavel_2
Responder

09/03/2015

Marisiana Battistella

Bem citado Lucas!
A melhor solução será aquela que vai retornar os dados que atendem a regra em questão.
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar