Agrupar por data, mas não linha a linha

15/04/2013

0

Preciso fazer um cout por data. Bem, cada insert na tabela ele grava com a data do dia. Então, hoje em meu teste eu inputei 10 registros. Quando eu faço um count, deveria vir 10 para a data de hoje. O que está acontecendo é que vem 10 linhas, com Count = 1. O que eu quero é um count com uma única linha e um total geral por data. Como eu faço isso?

Select count(id_triagem) as total from tbl_Triagem

Preciso fazer o select acima funcionar da forma como eu escrevi.
Pjava

Pjava

Responder

Posts

15/04/2013

Joel Rodrigues

Agrupe pela data. Por exemplo:
SELECT COUNT(*) FROM TABELA GROUP BY DATA
Responder

15/04/2013

Alex Lekao

Ola boa tarde!!!

Pode ser que o campo esteja como data e hora e neste caso do agrupamento serão diferentes.

Você pode tentar converter o campo para padrão brasileiro por exemplo para fazer o agrupamento para ver se da certo.

por exemplo convert(varchar,sua_data,103).

não sei se entendi exatamente o que esta precisando, mas testa ai e diz se deu certo.

Abraco.

Alex - Lekao
Responder

15/04/2013

Pjava

Então, colocando o filtro de data na cláusla WHERE, aí sim, consigo fazer, usando também a questão da data sem a parte hora. Vou tentar fazer dentro da cláusula select sem a parte hora. Descobri que era a hora mesmo, milésimos de segundos diferentes.
Responder

15/04/2013

Pjava

Não deu certo. Achei que dava, mas no meu atual select não deu. Abaixo meu select:
WITH
CTE_A AS
(SELECT ID_TRIAGEM,CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_CADASTRO)))AS DT_CADASTRO,COUNT(*) AS QTDTRIAGEM FROM TBL_TRIAGEM
WHERE ID_TIPO_DOCUMENTO IN(2,3,4,9) AND
CONVERT(VARCHAR(10),DT_CADASTRO,103) BETWEEN '11/04/2013' AND '16/04/2013'
GROUP BY ID_TRIAGEM,DT_CADASTRO) ,

CTE_B AS
(SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_LANCAMENTO)))AS DT_LANCAMENTO,COUNT(*) AS QTDCADASTRO FROM TBL_CADASTRO
WHERE CONVERT(VARCHAR(10),DT_LANCAMENTO,103) BETWEEN '11/04/2013' AND '16/04/2013'
GROUP BY DT_LANCAMENTO)

SELECT
CONVERT(VARCHAR,A.DT_CADASTRO,103)AS DATA,A.QTDTRIAGEM, B.QTDCADASTRO, -(A.QTDTRIAGEM - B.QTDCADASTRO) AS DIFERENCA
,(A.QTDTRIAGEM - B.QTDCADASTRO) AS EXCEDENTE,(B.QTDCADASTRO/2) AS MEDIA
FROM CTE_A AS A
CROSS JOIN CTE_B AS B
WHERE CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),A.DT_CADASTRO))) = CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),B.DT_LANCAMENTO)))
Responder

16/04/2013

Alex Lekao

Entao experimente o convert(varchar,suadata,103), ele vai ficar no formato data dd/mm/aaaa.

vc pode usar no agrupamento tbm.

a principio vc ta convertendo para datetime, eh isto mesmo que vc quer?

Abraco.

Alex - Lekao
Responder

17/08/2013

José

PJava, poderia informar se sua duvida já foi sanada, ?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar