Agrupar por data, mas não linha a linha
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.
Select count(id_triagem) as total from tbl_Triagem
Preciso fazer o select acima funcionar da forma como eu escrevi.
Pjava
Curtidas 0
Respostas
Joel Rodrigues
15/04/2013
Falta um group by
group by tbl_Triagem
GOSTEI 0
Joel Rodrigues
15/04/2013
Agrupe pela data. Por exemplo:
SELECT COUNT(*) FROM TABELA GROUP BY DATA
GOSTEI 0
Alex Lekao
15/04/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
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
GOSTEI 0
Pjava
15/04/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.
GOSTEI 0
Pjava
15/04/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)))
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)))
GOSTEI 0
Alex Lekao
15/04/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
vc pode usar no agrupamento tbm.
a principio vc ta convertendo para datetime, eh isto mesmo que vc quer?
Abraco.
Alex - Lekao
GOSTEI 0
José
15/04/2013
PJava, poderia informar se sua duvida já foi sanada, ?
GOSTEI 0