Hilário,
Não tive tempo de fazer um teste, mas isso deve resolver seu problema:
SELECT
TMP.ZVJ_CODUSR,
TMP.COD,
TMP.NOME,
TMP.CODIGO,
TMP.DATA,
TMP.VERAPP,
TMP.VERBD,
TMP.ULTCNX
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY LOG.CODUSR ORDER BY LOG.CODIGO DESC) AS NUMLOG
LOG.ZVJ_CODUSR,
USUARIOS.COD,
USUARIOS.NOME,
LOG.CODIGO,
LOG.DATA,
LOG.VERAPP,
LOG.VERBD,
LOG.ULTCNX
FROM
LOG, USUARIOS
WHERE
LOG.CODUSR = USUARIOS.COD AND
LOG.DATA = '20090707'
ORDER BY
LOG.CODUSR,
LOG.CODIGO DESC
) AS TMP
WHERE
TMP.NUMLOG = 1
TMP.ZVJ_CODUSR,
TMP.COD,
TMP.NOME,
TMP.CODIGO,
TMP.DATA,
TMP.VERAPP,
TMP.VERBD,
TMP.ULTCNX
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY LOG.CODUSR ORDER BY LOG.CODIGO DESC) AS NUMLOG
LOG.ZVJ_CODUSR,
USUARIOS.COD,
USUARIOS.NOME,
LOG.CODIGO,
LOG.DATA,
LOG.VERAPP,
LOG.VERBD,
LOG.ULTCNX
FROM
LOG, USUARIOS
WHERE
LOG.CODUSR = USUARIOS.COD AND
LOG.DATA = '20090707'
ORDER BY
LOG.CODUSR,
LOG.CODIGO DESC
) AS TMP
WHERE
TMP.NUMLOG = 1
A função ROW_NUMBER vai numerar os registros reiniciando a contagem (PARTITION_BY) quando houver mudança no valor do campo LOG.CODUSR.
Depois você usa essa query como uma derivada pegando apenas os numeros de linha com valor 1
[]'s
João Bosel Polisél
DBA SQL Server
DO-CIBD - Coordenadoria de Infra para Banco de Dados
BM&F Bovespa S.A. - Bolsa de Valores, Mercadorias & Futuros
* jpolisel@...
( +55 (11) 3233-2259
DBA SQL Server
DO-CIBD - Coordenadoria de Infra para Banco de Dados
BM&F Bovespa S.A. - Bolsa de Valores, Mercadorias & Futuros
* jpolisel@...
( +55 (11) 3233-2259
From: mssql-l@... [mailto:mssql-l@...] On Behalf Of Luis Hilário Tobler Garcia
Sent: sexta-feira, 10 de julho de 2009 09:43
To: mssql-l@...
Subject: Re: [mssql-l] Mostrar somente a primeira linha de cada faixa de registros
SQL Server 2005.
----- Original Message -----From: João Bosel PoliselTo: mssql-l@...Sent: Wednesday, July 08, 2009 4:59 PMSubject: RE: [mssql-l] Mostrar somente a primeira linha de cada faixa de registros
Hilário,Você está usando sql 2000 ou 2005/2008?No 2000 é muito ruim fazer isso, mas no 2005/2008 há um recurso novo que ajuda bastante.Indica a versão pra gente ajudar![]'sJoão Bosel Polisél
DBA SQL Server
DO-CIBD - Coordenadoria de Infra para Banco de Dados
BM&F Bovespa S.A. - Bolsa de Valores, Mercadorias & Futuros
* jpolisel@bmf.com.br
( +55 (11) 3233-2259
From: mssql-l@yahoogrupos.com.br [mailto:mssql- l@yahoogrupos. com.br] On Behalf Of Luis Hilário Tobler Garcia
Sent: quarta-feira, 8 de julho de 2009 16:43
To: mssql-l@yahoogrupos.com.br
Subject: [mssql-l] Mostrar somente a primeira linha de cada faixa de registrosBoa tarde,sou novo no grupo e estou tendo uma dificuldade para selecionar a lista de últimas conexões de uma tabela de log de transmissão, cada usuário que se conecta gera um registro no log e eu preciso fazer uma lista com todas as utlimas conexões de cada usuário, tentei mas não funcionou com group by e com o distinctSELECT
LOG.ZVJ_CODUSR, USUARIOS.COD, USUARIOS.NOME,
LOG.CODIGO, LOG.DATA, LOG.VERAPP,
LOG.VERBD, LOG.ULTCNX
FROM
LOG, USUARIOS
WHERE
LOG.CODUSR = USUARIOS.COD AND
LOG.DATA = '20090707'
ORDER BY
LOG.CODUSR, LOG.CODIGO DESCAlguma sugestão?Obrigado, Hilário.Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não deverá utilizar, copiar, alterar, divulgar a informação nela contida ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação. This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, change, take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não deverá utilizar, copiar, alterar, divulgar a informação nela contida ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação. This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, change, take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.