Somar excedente de ontem com o de hoje
17/04/2013
0
WITH
CTE_A AS
(SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_CADASTRO)))AS DT_CADASTRO,
COUNT(*) AS QTDEA FROM TBL_TRIAGEM
WHERE ID_TIPO_DOCUMENTO IN(2,3,4,9) AND CONVERT(VARCHAR(10),DT_CADASTRO,103) BETWEEN '06/04/2013' AND '25/04/2013'
GROUP BY CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_CADASTRO)))) ,
CTE_B AS
(SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_LANCAMENTO)))AS DT_LANCAMENTO,
COUNT(*) AS QTDEB FROM TBL_CADASTRO WHERE CONVERT(VARCHAR(10),DT_LANCAMENTO,103)
BETWEEN '06/04/2013' AND '25/04/2013'
GROUP BY CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_LANCAMENTO))))
SELECT
CONVERT(VARCHAR,A.DT_CADASTRO,103)AS DATA,A.QTDEA, B.QTDEB, -(A.QTDEA - B.QTDEB) AS DIFERENCA,
(A.QTDEA - B.QTDEB) AS EXCEDENTE,(B.QTDEB/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)))
Gostaria de fazer o seguinte. Somar o excedente de ontem com o excedente de hoje. Não sei como faço isso.
Pjava
Posts
17/04/2013
Alex Lekao
Como vc precisaria que ficasse o resultado dos selects?
vc vai utilizar isto com algum tipo de filtro?
cara eu tenho algo parecido que uso aqui na empresa mas não sei se resolveria para vc.
me passe mais alguns detalhes e vamos ver o que conseguimos.
Abraco.
Alex - Lekao
17/04/2013
Pjava
18/04/2013
Alex Lekao
ve se consegue algo assim, vou ver se consigo o meu código para postar aqui para vc ter um norte.
18/04/2013
Alex Lekao
select
COUNT(*) as atehoje
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '18.04.2013'
======================================================
select
COUNT(*) atehoje,
(select
COUNT(*)
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '17.04.2013') as ateontem
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '18.04.2013'
======================================================
select
COUNT(*)-
(select
COUNT(*)
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '17.04.2013') as diferenca
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '18.04.2013'
======================================================
select
COUNT(*)+
(select
COUNT(*)
from venda
where tipovda = 'VD'
and datemi between '18.04.2013' and '18.04.2013') as acumulado
from venda
where tipovda = 'VD'
and datemi between '01.04.2013' and '17.04.2013'
18/04/2013
Alex Lekao
eu estive relendo o post e vi que oque vc quer eh outra coisa... mas acredito que já deva para ter uma ideia.
vamos ver ate onde conseguimos chegar.
18/04/2013
Pjava
WITH
CTE_A AS
(SELECT
CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_CADASTRO)))AS DT_CADASTRO,COUNT(*) AS QTDEA
FROM TBL_TRIAGEM
WHERE ID_TIPO_DOCUMENTO IN(2,3,4,9) AND CONVERT(VARCHAR(10),DT_CADASTRO,103)
BETWEEN '09/04/2013' AND '18/04/2013'
GROUP BY
CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_CADASTRO)))) ,
CTE_B AS
(SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_LANCAMENTO)))AS DT_LANCAMENTO,
COUNT(*) AS QTDEB
FROM TBL_CADASTRO
WHERE CONVERT(VARCHAR(10),DT_LANCAMENTO,103)
BETWEEN '09/04/2013' AND '18/04/2013'
GROUP BY CONVERT(DATETIME, FLOOR(CONVERT(FLOAT(24),DT_LANCAMENTO)))), CTE_R AS ( SELECT CONVERT(VARCHAR, A.DT_CADASTRO, 103) AS DATA, A.QTDEA, B.QTDEB, -(A.QTDEA - B.QTDEB) AS DIFERENCA, (A.QTDEA - B.QTDEB) AS EXCEDENTE, (B.QTDEB/2) AS MEDIA, ROW_NUMBER() OVER(ORDER BY A.DT_CADASTRO) as RowNum FROM CTE_A AS A INNER JOIN CTE_B AS B ON A.DT_CADASTRO = B.DT_LANCAMENTO ) SELECT H.*, H.EXCEDENTE + COALESCE(O.EXCEDENTE, 0) AS EXCEDENTEACUMULADO FROM CTE_R AS H LEFT JOIN CTE_R AS O ON O.ROWNUM = H.ROWNUM - 1
18/04/2013
Alex Lekao
obrigado por compartilhar a solução.
abraco.
Alex - Lekao
17/08/2013
José
Clique aqui para fazer login e interagir na Comunidade :)