Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fab355

Queria que isso funcionasse, apenas data....

Recommended Posts

Olá pessoal,Estou com duvida em uma consulta que no meu entender é bastante simples, tenho a mesma consulta rodando em Sybase e Access, porém no SQL Server tive que fazer umas adaptações as quais ainda não achei um modo suscinto, por isso peço ajuda.1ºTenho o seguinte lista/resumo:select dt_entrada, count(*)from notasgroup by dt_entradaData Nº10/09/2007 4011/09/2007 3512/09/2007 39só queria q exibisse isso e mais nada, ou seja, mostra uma série de registros por data, ao clicar apresento os registros apenas do dia selecionado, com a seguinte consulta:select numero_nf, serie_nf, item, vl_unitario, qtd, usuariofrom notaswhere dt_entrada=p_dia_selecionadoEnfim estas situações acima estão rodando perfeitamente com Banco Sybase e Access, porém no SQL Server ao criar a tabela já percebi que não existe o tipo date ao invéz disso tive que usar o datetime, que é date e hora, e com isso to enrolado para fazer estas duas páginas funcionarem.Andei pesquisando, já vi algumas funções do tipo year() e convert, mas confesso que não gostei muito da idéia, até porque tentei usar assim:select year(dt_entrada) as ano, month(dt_entrada) as mes, day(dt_entrada) as diafrom notasgroup by ano, mes, diae não funcionou, acredito que tenha uma forma mais simples e enxuta de se resolver isso, mas até o momento não achei.Agradeço desde já pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é justamente este que você identificou, o sql server não tem um campo date que contenha apenas uma data. Quando você faz o "group by" em um campo datetime sem tratamento algum, o SGBD acaba considerando a parte da hora como integrante do "group" e aí complica para sumarizar os dados de um único dia !

 

No sql server a maneira mais "elegante" de fazer isto, é trabalhando com convert(). Tipo assim :

 

select convert(char(10),dt_entrada,103), count(*)from notasgroup by convert(char(10),dt_entrada,103)

O resultado será exatamente o quê você precisa !

 

T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigadão pela força, a informação que você passou ajudou e muito.

 

Tive problemas na ordenação, além do resumo gostaria de ordená-lo em ordem decrescente e ao pesquisar o CONVERT encontrei outras variações que atendeu na boa o que precisava, por isso estou colocando aqui a solução que cheguei, caso alguem tenha a mesma dúvida pode recorrer a esse registro.

 

 

No resumo foi feito dessa forma:

 

//1º SQLselect convert(char,dt_entrada,111), count(*) as cuponsfrom notasgroup by convert(char,dt_entrada,111)order by convert(char,dt_entrada,111) desc...//2º SQLselect convert(char(10),dt_entrada ,111), *from notaswhere convert(char,dt_entrada,111) = '2006/06/14' //aqui seria a opção desejada a qual seria selecionada no 1º SQL.

 

 

Abração

 

Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.