SQL PARA AGRUPAR E MOSTRAR O ULTIMO REGISTRO

WEBIER 28/09/2014 23:55:47
#441581
Tenho a seguinte SQL:

[Ô]SELECT tabelaX.codigo, tabelaX.descricao, tabelaX.quant_estoque, [Ô] & _
[Ô]tabelaX.quant_min, ISNULL(tabelaB.venda, 0) AS var_venda [Ô] & _
[Ô]FROM tabelaX INNER JOIN tabelaB ON tabelaX.codigo = tabelaB.codigo_produto [Ô] & _
[Ô]WHERE (tabelaX.ativo = 1) ORDER BY tabelaX.descricao;[Ô]


Com essa sql acima consigo cruzar os dados de duas tabelas e jogar num flexgrid
Roda direitinho...

Porem se na tabelaB tiver 4 registros(exemplo) com o mesmo codigo_produto, ele traz os 4 registro e exibe no grid.

Eu precisava trazer somente o ultimo registro...

Para eu saber qual é o ultimo registro, será o que tiver o ultimo tabelaB.codigo

Para agrupar, já usei o [Ô]DISTINCT[Ô] e o [Ô]GROUP BY[Ô] mais sempre aparece todos...
FFCOUTO 29/09/2014 09:02:15
#441583
Resposta escolhida
Utilize um TOP 1 após o SELECT que deve funcionar.

[Ô]SELECT TOP 1 tabelaX.codigo, tabelaX.descricao, tabelaX.quant_estoque, [Ô] & _
[Ô]tabelaX.quant_min, ISNULL(tabelaB.venda, 0) AS var_venda [Ô] & _
[Ô]FROM tabelaX INNER JOIN tabelaB ON tabelaX.codigo = tabelaB.codigo_produto [Ô] & _
[Ô]WHERE (tabelaX.ativo = 1) ORDER BY tabelaX.descricao;[Ô]
WEBIER 29/09/2014 09:59:24
#441584
Já tinha usado o TOP 1 tambem, mais nessa lista exibe varios produtos distintos... e usando o TOP 1 ele me mostra somente o ultimo produto de um 1 unico produto.

Na verdade quero agrupa-los...

ou seja,

ARROZ....... 1,20
ARROZ.........1,25
ARROZ.........1,30
FEIJAO..........2,00

Ele vai mostrar

ARROZ....... 1,30 (esse foi o ultimo cadastrado na tabelaB)
FEIJAO........2,00
Tópico encerrado , respostas não são mais permitidas