Fórum Dúvida de SQL - Não sei se é possível #176155

20/08/2003

0

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 :?:


Oberdan

Oberdan

Responder

Posts

20/08/2003

Afarias

Uma solução seria usar Stored Procedures


Responder

Gostei + 0

20/08/2003

Oberdan

Então quer dizer que com apenas uma instrução SQL é impossível, não?

[]´s

Oberdan :?: :!:


Responder

Gostei + 0

20/08/2003

Evandro_covre

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.


Responder

Gostei + 0

20/08/2003

Afarias

Uma ótima solução (principalmente se o banco não dispõe de Stored Procs).

T+


Responder

Gostei + 0

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

Aceitar