Dúvida de SQL - Não sei se é possível
Tenho uma consulta que busca informações e agrupa o resultado por mês. Por Exemplo:
select count(data) as Qtde,
(CStr(month(data)) + ´/´ + CStr(year(data))) as ´Mês/Ano´
from Indi_Virus
Group by month(data), year(data)
Order by year(data), month(data)
Assim o resultado seria:
Qtde | Mês/Ano
---------------------
1 | 01/2003
3 | 02/2003
5 | 05/2003
O problema é o seguinte. Quando um dos meses não tem nenhum valor, o resultado da minha consulta (obviamente) ´pula´ este mês na hora de exibir. O que eu queria saber é se existe uma forma de fazer com que a consulta me traga o resultado dos 12 meses do ano, e quando não encontrar nenhum valor num determinado mês, exiba mesmo assim o mês porém com o resultado zerado. Exemplo:
Qtde | Mês/Ano
---------------------
1 | 01/2003
3 | 02/2003
0 | 03/2000
0 | 04/2000
5 | 05/2003
Não sei se fui claro, e também acredito que isto não seja possível, porém se alguém tiver alguma dica.
[]´s
Oberdan :?:
select count(data) as Qtde,
(CStr(month(data)) + ´/´ + CStr(year(data))) as ´Mês/Ano´
from Indi_Virus
Group by month(data), year(data)
Order by year(data), month(data)
Assim o resultado seria:
Qtde | Mês/Ano
---------------------
1 | 01/2003
3 | 02/2003
5 | 05/2003
O problema é o seguinte. Quando um dos meses não tem nenhum valor, o resultado da minha consulta (obviamente) ´pula´ este mês na hora de exibir. O que eu queria saber é se existe uma forma de fazer com que a consulta me traga o resultado dos 12 meses do ano, e quando não encontrar nenhum valor num determinado mês, exiba mesmo assim o mês porém com o resultado zerado. Exemplo:
Qtde | Mês/Ano
---------------------
1 | 01/2003
3 | 02/2003
0 | 03/2000
0 | 04/2000
5 | 05/2003
Não sei se fui claro, e também acredito que isto não seja possível, porém se alguém tiver alguma dica.
[]´s
Oberdan :?:
Oberdan
Curtidas 0
Respostas
Afarias
20/08/2003
Uma solução seria usar Stored Procedures
GOSTEI 0
Oberdan
20/08/2003
Então quer dizer que com apenas uma instrução SQL é impossível, não?
[]´s
Oberdan :?: :!:
[]´s
Oberdan :?: :!:
GOSTEI 0
Evandro_covre
20/08/2003
Dá sim utilizando o Left Outer Join e Right outer Join.
O Left traz todos os resultados da tabela da esquerda e se não tiver equivalente na tabela da direita traz nulo e o Right é o inverso.
mas isso somente se tiver cadastrado no banco as informações tipo todos os meses do ano e sendo relacionado, pelo q eu percebi não tem jeito pois ´somente´ traz as informações pra vc, não as cria.
O Left traz todos os resultados da tabela da esquerda e se não tiver equivalente na tabela da direita traz nulo e o Right é o inverso.
mas isso somente se tiver cadastrado no banco as informações tipo todos os meses do ano e sendo relacionado, pelo q eu percebi não tem jeito pois ´somente´ traz as informações pra vc, não as cria.
GOSTEI 0
Afarias
20/08/2003
Uma ótima solução (principalmente se o banco não dispõe de Stored Procs).
T+
T+
GOSTEI 0