DUVIDA EM COMO MONTAR UMA SELECT

PERCIFILHO 06/07/2012 16:15:28
#405661
Olá, amigos, tenho uma situação em que não estou conseguindo resolver, vou tentar descrever para que você possam me ajudar.

Tenho 2 Tabelas:
Digitacao e Movimentacao

Layout da tabela Digitacao
-----------------------------------
NotaFiscal DataEmissao Aliquota PrecoCusto
123 01/01/2012 12,00 18,000
1234 02/01/2012 12,00 18,500
1298 04 /03/2012 18,00 15,000
5437 05/05/2012 18,00 17,000


Layout da tabela Movimentacao
----------------------------------------
Nota Fiscal DataEmissao CodigoProduto
123 01/01/2012 12
1298 04/03/2012 35
1298 04/03/2012 41
123 05/05/2012 35


Então, o que eu preciso é montar uma Select que me retorne o último preço de custo do produto com alíquota de 12,00 e o último preço de custo do produto com alíquota de 18,00

Ou seja, por exemplo, o produto com o código 35, teria que me retornar:

Código Produto Alíquota 12,00 Alíquota 18,00
35 18,000 15,000

Trabalho com SqlServer.

Até mais.
FILMAN 06/07/2012 19:45:18
#405670
Deixa eu entender

Tabela Digitação é uma tabela que é a entrada de nota?
Tabela movimentação é uma tabela de produtos vendidos?


SELECT TabelaDigitacao.* AS D, TabelaMovimentacao.* AS M FROM D INNER JOIN M ON D.NotaFiscal = M.NotaFiscal WHERE D.Aliquota=18 AND D.Aliquota=12 ORDER BY M.CodigoProduto ASC


FFCOUTO 07/07/2012 19:29:33
#405699
Veja se ajuda


SELECT cod_produot, (SELECT TOP 1 precocusto FROM tabela_digitacao WHERE (notafiscal = tabela_movimento.notafiscal) AND (cod_produto = tabela_movimento.cod_produto) AND (aliquota = 12) ORDER BY data_emissao DESC) AS aliquota_12, (SELECT TOP 1 precocusto FROM tabela_digitacao WHERE (notafiscal = tabela_movimento.notafiscal) AND (cod_produto = tabela_movimento.cod_produto) AND (aliquota = 18) ORDER BY data_emissao DESC) AS aliquota_18 FROM tabela_digitacao WHERE (cod_produto = 35);


Ou usando o UNION e você terá dois registros


SELECT TOP 1 codigo_prouduto, aliquota, precocusto FROM tabela_digitacao WHERE (cod_produto = 35) AND (aliquota = 12) ORDER BY dataemissao DESC
UNION
SELECT TOP 1 codigo_prouduto, aliquota, precocusto FROM tabela_digitacao WHERE (cod_produto = 35) AND (aliquota = 18) ORDER BY dataemissao DESC


Tópico encerrado , respostas não são mais permitidas