Guest - Cristiano - Postado Janeiro 2, 2006 Denunciar Share Postado Janeiro 2, 2006 Como faço uma listagem de registros separados por mes e listar apenas os três primeiros registros de cada mês.Tipo:JANEIRO-> 1-> 2-> 3FEVEREIRO-> 1-> 2-> 3e por aí vai........ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Janeiro 2, 2006 Denunciar Share Postado Janeiro 2, 2006 Nunca fiz isso com uma instrução SQL só.O q você poderia fazer é usar um select distinct no campo mes para pegar os meses da tabela.depois percorrer esse recordset criando uma nova consulta usando select top 3 para pegar apenas os 3 primeiros registros WHERE o campo mes seja o valor atual do campo mes no recordset. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 2, 2006 Denunciar Share Postado Janeiro 2, 2006 pode ser:Select Top 3 Campo1, Campo2 from Tabela Where Month(Data) = 1 UNION ALL Select Top 3 Campo1, Campo2 from Tabela Where Month(Data) = 2 UNION ALL Select Top 3 Campo1, Campo2 from Tabela Where Month(Data) = 3 ... etc se você não sabe os meses q estao no banco faca um select: Select Month(data) as Mes from Tabela Group By Month(Data)e faz o primeiro select usando for.o problema tanto no meu codigo quanto no dp cyberalex é q o banco de dados so suporta uma determinada quantidade de WHERE ou de UNION. por isso, se você for separar por ano, e no banco tiverem dez anos, serao 12 meses * 10 = 120 UNIONs ou 120 WHEREs (AND), e não sei se o banco aguenta isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Janeiro 2, 2006 Denunciar Share Postado Janeiro 2, 2006 vou aplicar os exemplo do Kuroi em cima da minha lógica postada anteriormente: sql = Select Month(data) as Mes from Tabela Group By Month(Data) set rs = conexao.execute(sql) Do while not rs.eof Response.write "Mes: " & rs("mes") & "<br>" sql2 = Select Top 3 Campo1, Campo2 from Tabela Where Month(Data) =" & rs("mes") conexao.execute(sql2) Do while not rs2.eof 'mostra os dados Rs2.MoveNext loop rs.movenext loop Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 2, 2006 Denunciar Share Postado Janeiro 2, 2006 vou aplicar os exemplo do Kuroi em cima da minha lógica postada anteriormente: sql = Select Month(data) as Mes from Tabela Group By Month(Data) set rs = conexao.execute(sql) Do while not rs.eof Response.write "Mes: " & rs("mes") & "<br>" sql2 = Select Top 3 Campo1, Campo2 from Tabela Where Month(Data) =" & rs("mes") conexao.execute(sql2) Do while not rs2.eof 'mostra os dados Rs2.MoveNext loop rs.movenext loop isso ae, cyberalexxxdesse jeito fica melhor, dando um select por vez e mostrando separado.não corre o risco de estourar os WHERE igual eu tinha falado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Cristiano -
Como faço uma listagem de registros separados por mes e listar apenas os três primeiros registros de cada mês.
Tipo:
JANEIRO
-> 1
-> 2
-> 3
FEVEREIRO
-> 1
-> 2
-> 3
e por aí vai........
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.