Array
(
)

Agrupar por data, mas não linha a linha

Pjava
   - 15 abr 2013

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.

Joel Rodrigues
   - 15 abr 2013

Agrupe pela data. Por exemplo:
#Código

SELECT COUNT(*) FROM TABELA GROUP BY DATA

Alex Lekao
   - 15 abr 2013

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

Pjava
   - 15 abr 2013

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.

Pjava
   - 15 abr 2013

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)))

Alex Lekao
   - 16 abr 2013

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

José
   - 17 ago 2013

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