Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davisvasconcellos

Consulta com IF

Recommended Posts

Pessoal, estou com uma dúvida para criar uma consulta utilizando o IF para montar as colunas .

 

possuo uma tabela com 3 campos importantes:

DT_PREV2, DT_FAT, VALOR_ITEM

 

DT_PREV2 = previsão de faturamento

DT_FAT = data do faturamento

VALOR_ITEM = valor do faturamento

 

Quero realizar somatórios dentro de um mesmo ano (no caso 2011)

Quando o DT_FAT é nulo, o item ainda não foi faturado e o que vale é a DT_PREV2(que é a data prevista )

Quando DT_FAT não é nulo, o item já foi faturado na data que foi inserida nesta coluna.

 

Gostaria de obter somatórios.

TGeral Somatório de toda a coluna VALOR_ITEM, independente do ano

TFat Faturado Geral (somatório da coluna VALOR_ITEM quando DT_FAT não for nulo,independente do ano)

TPrev Previsto Geral (somatório da coluna VALOR_ITEM quando DT_FAT for nulo,independente do ano)

FatAno Faturado do ano (somatório da coluna VALOR_ITEM somente quando DT_FAT for do ano de 2011)

PreAno Previsto do Ano (somatório da coluna VALOR_ITEM somente quando DT_FAT for nulo e DT_PREV2 for do ano de 2011)

 

 

o resultado seria parecido com isto:

projeto| TGeral | TFat| TPrev | FANO | PANO |

proj A | 100 | 50 | 50 | 50 | 50 |

proj A | 200 | 100 | 100 | 80 | 20 |

proj A | 500 | 200 | 300 | 60 | 10 | <-- (em 2011 faturou 60 e previsto 10, porém existe 300 de previsão para outros anos)

 

 

estou tentando inicialmente separar os faturados dos previsto mãos não estou conseguindo muito bem, a resposta está meio confusa.

Segue a minha consulta:

 

<code>

select

projetos.abreviatura, sum(valor_item) as 'TOTAL',

IF((EXTRACT(YEAR FROM contrato_itens.dt_fat ) = 2011), sum(valor_item), '') AS 'FATURADO',

IF((EXTRACT(YEAR FROM contrato_itens.dt_prev2 ) = 2011) and contrato_itens.dt_fat is null, sum(valor_item), '') AS 'PREVISTO'

from contrato_itens,projetos

where contrato_itens.id_proj=projetos.codigo

group by projetos.codigo

order by projetos.abreviatura

</code>

 

o somatório total está OK, mas aparentemente quando a primeiro teste é válido ele nãpo faz o segundo.

o que resulta é que eu obtenho os valores em somente uma coluna.

TOTAL - FATURADO - BRANCO

TOTAL - BRANCO - PREVISTO

 

Se alguem puder me esclarecer ou dar uam direção , eu agradeceria.

 

Obrigado

Davis

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou simplificar a pergunta para ver se alguém consegue me dar um help.

 

se for nulo soma a coluna PREVISTO se conter uma data soma na coluna PAGO

 

TABELA:

 

ITEM CLIENTE DATA VALOR

camisa---JOAO---10/out---10

blusa----JOAO---11/out---10

sapato---JOAO----null----20

lápis----MARIA---20/out--10

borr-----JOAO----null----30

copo-----MARIA----null----50

CD-------MARIA---10/out---20

mouse----MARIA---10/out---10

oculos---JOAO----null----30

tampa----JOSE---10/out---20

pilha----JOSE----null----10

monitor--JOSE 10/out 10

hd-------JOAO----null----10

memoria--MARIA----null----50

imp------MARIA 20/out 10

cueca----JOSE----null----10

calca----JOSE---10/out---10

porta----JOAO---10/out---10

 

RESULTADO

--------PAGO----PREVISTO

JOAO----30------90

MARIA---50------100

JOSE----30------20

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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