Pesquisa sem repetir um dos campos.
23/09/2010
0
[LOAD_ID] int IDENTITY(1, 1) NOT NULL,
[VALUES_ID] int NOT NULL,
[GROUPS_ID] int NOT NULL,
[CARNUMBER] int NOT NULL,
[LOAD_DATA] datetime NULL,
[LOAD_HORA] datetime NULL,
PRIMARY KEY CLUSTERED ([LOAD_ID]),
CONSTRAINT [LOAD_fk] FOREIGN KEY ([VALUES_ID])
REFERENCES [dbo].[VALUES] ([VALUES_ID])
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT [LOAD_fk2] FOREIGN KEY ([GROUPS_ID])
REFERENCES [dbo].[GROUPS] ([GROUPS_ID])
ON UPDATE NO ACTION
ON DELETE NO ACTION
Aqui um exemplo do resultado de pesquisa de todas as informações da tabela. LOAD_ID VALUES_ID GROUPS_ID CARNUMBER LOAD_DATA LOAD_HORA 12 35115 3 234553 17/9/2010 00:00 1/1/1900 15:58 13 35105 2 4574567 17/9/2010 00:00 1/1/1900 16:21 14 35117 3 546745675 17/9/2010 00:00 1/1/1900 16:21 15 35106 1 467567 17/9/2010 00:00 1/1/1900 16:22 19 35114 3 423434 17/9/2010 00:00 1/1/1900 15:54 23 35144 2 45235 19/9/2010 00:00 1/1/1900 19:50 25 35149 2 42535 20/9/2010 00:00 1/1/1900 11:53 26 35150 3 42343 20/9/2010 00:00 1/1/1900 12:10 35 35157 6 345646 20/9/2010 00:00 1/1/1900 19:02 36 35158 5 234123 20/9/2010 00:00 1/1/1900 19:06 37 35159 6 111444 20/9/2010 00:00 1/1/1900 19:06 38 35160 4 99895 20/9/2010 00:00 1/1/1900 19:06 39 35161 3 42343434 20/9/2010 00:00 1/1/1900 19:28 40 35162 4 423411 20/9/2010 00:00 1/1/1900 19:28 41 35163 5 66534 20/9/2010 00:00 1/1/1900 19:28 42 35164 6 323455 20/9/2010 00:00 1/1/1900 19:28 43 35165 4 88880 20/9/2010 00:00 1/1/1900 19:29 Esta é a rotina que uso para pegar os ultimos 6 registro: select top 6 * from LOAD ORDER BY LOAD_DATA desc, LOAD_HORA desc O campo que preciso ordenar e agrupar é o GROUPS_ID. Alguem teria uma luz ou solução hehehehe , já estou a algum tempo tentando solucionar pois gostaria de fazê-lo todo em sql. Uso Sql Server 2005.
Na realidade eu realmente gostaria de que ele selecionasse os ultimos 6 registros , porem, com o campo GROUPS_ID em ordem crescente 1,2,3,4,5,6 e que cada registro correspondente ao campo GROUPS_ID fosse o ultimo a ser inserido.
Alexandre Pedroso
Posts
23/09/2010
Eriley Barbosa
23/09/2010
Alexandre Pedroso
12,000000 35115,000000 1,000000 234553,000000 17/9/2010 00:00 1/1/1900 15:58
13,000000 35105,000000 2,000000 74574567,000000 17/9/2010 00:00 1/1/1900 16:21
14,000000 35117,000000 3,000000 546745675,000000 17/9/2010 00:00 1/1/1900 16:21
15,000000 35106,000000 4,000000 467567,000000 17/9/2010 00:00 1/1/1900 16:22
19,000000 35114,000000 5,000000 423434,000000 17/9/2010 00:00 1/1/1900 15:54
23,000000 35144,000000 6,000000 45235,000000 19/9/2010 00:00 1/1/1900 19:50
25,000000 35149,000000 2,000000 42535,000000 20/9/2010 00:00 1/1/1900 11:53
26,000000 35150,000000 3,000000 42343,000000 20/9/2010 00:00 1/1/1900 12:10
35,000000 35157,000000 6,000000 345646,000000 20/9/2010 00:00 1/1/1900 19:02 Peguei alguns registros acima e modifiquei o campo PLC_GROUPS_ID. E claro que na pesquisa deveria retornar em sequencia ou não porem o ultimo registro de cada resultado do campo PLC_GROUPS_ID.
23/09/2010
Eriley Barbosa
23/09/2010
Alexandre Pedroso
23/09/2010
Eriley Barbosa
23/09/2010
Alexandre Pedroso
24/09/2010
Wilson Junior
24/09/2010
Jair N.
SELECT sq_load.*
FROM (
SELECT num_ped_entra,qtd, DENSE_RANK()
OVER (PARTITION BY values_id
ORDER BY groups_id DESC
, load_data DESC
, load_hora DESC) ranking
FROM load
) sq_load
WHERE (ranking BETWEEN 1 AND 6)
ORDER BY ranking
24/09/2010
Alexandre Pedroso
24/09/2010
Jair N.
SELECT sq_load.*
FROM (
SELECT *, DENSE_RANK()
OVER (PARTITION BY groups_id
ORDER BY load_data DESC
, load_hora DESC) ranking
FROM dbo.LOAD_TB
) sq_load
WHERE (ranking BETWEEN 1 AND 6)
ORDER BY groups_id, ranking
Resondendo sua pergunta: "não é compativel com versões anteriores ao MSSQL 2005" perfeita no 2008.
24/09/2010
Alexandre Pedroso
26/09/2010
Alexandre Pedroso
27/09/2010
Alexandre Pedroso
(
select top 6 * from PLC_LOAD
ORDER BY PLC_LOAD_DATA desc, PLC_LOAD_HORA desc
)
order by PLC_GROUPS_ID
Post finalizado e obrigado a todos.
Clique aqui para fazer login e interagir na Comunidade :)