Estou fazendo esse SELECT, alguém poderia me ajudar?

03/08/2019

0

Bom estou realizando esse select em duas tabelas e gostaria que o retorno do campo (valortotal) vinhe-se agrupado.
Do jeito que estou fazendo ele retorna o valor só que em duas linhas.

SELECT SUM( A.VALORTOTAL )
FROM CO_CONTRATOFATURAMENTO A
WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
AND NOT A.STATUS = 6

UNION

SELECT SUM( A.VALORTOTAL )
FROM FT_ARMAZENAGEM A
WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
AND A.TIPO NOT IN (2,3)

Alguém pode me ajudar?
Isaque

Isaque

Responder

Post mais votado

05/08/2019

você precisa somar as duas linhas obtidas. assim:
SELECT SUM(TOTAL) TOTALGERAL FROM
(	SELECT SUM(VALORTOTAL) TOTAL FROM CO_CONTRATOFATURAMENTO
	WHERE DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1,0 )
	AND NOT DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
	AND NOT STATUS = 6

	UNION ALL

	SELECT SUM(VALORTOTAL) FROM FT_ARMAZENAGEM
	WHERE DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
	AND NOT DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
	AND TIPO NOT IN (2,3)
) TAB



Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

04/08/2019

Kleber Santos

Bom estou realizando esse select em duas tabelas e gostaria que o retorno do campo (valortotal) vinhe-se agrupado.
Do jeito que estou fazendo ele retorna o valor só que em duas linhas.

SELECT SUM( A.VALORTOTAL )
FROM CO_CONTRATOFATURAMENTO A
WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
AND NOT A.STATUS = 6

UNION

SELECT SUM( A.VALORTOTAL )
FROM FT_ARMAZENAGEM A
WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
AND A.TIPO NOT IN (2,3)

Alguém pode me ajudar?

SELECT (TABELA_CONTRATO.SOMACONTRATO (troque por sinal de mais) TABELA_ARMAZENAGEM.SOMAARMAZENAGEM) AS TOTAL
FROM (
    SELECT SUM( A.VALORTOTAL ) AS SOMACONTRATO
    FROM CO_CONTRATOFATURAMENTO A
    WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
    AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
    AND NOT A.STATUS = 6
    ) TABELA_CONTRATO,

    (SELECT SUM( A.VALORTOTAL ) AS SOMAARMAZENAGEM
    FROM FT_ARMAZENAGEM A
    WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
    AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
    AND A.TIPO NOT IN (2,3)
    ) TABELA_ARMAZENAGEM
WHERE 1=1

+
Eu não domino o UNION, veja se dessa forma vai apresentar uma soma correta
Responder

04/08/2019

Kleber Santos

Bom estou realizando esse select em duas tabelas e gostaria que o retorno do campo (valortotal) vinhe-se agrupado.
Do jeito que estou fazendo ele retorna o valor só que em duas linhas.

SELECT SUM( A.VALORTOTAL )
FROM CO_CONTRATOFATURAMENTO A
WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
AND NOT A.STATUS = 6

UNION

SELECT SUM( A.VALORTOTAL )
FROM FT_ARMAZENAGEM A
WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
AND A.TIPO NOT IN (2,3)

Alguém pode me ajudar?


Tente também adicionar um GROUP BY no final desses UNION
Responder

04/08/2019

Gérson

Bom estou realizando esse select em duas tabelas e gostaria que o retorno do campo (valortotal) vinhe-se agrupado.
Do jeito que estou fazendo ele retorna o valor só que em duas linhas.

SELECT SUM( A.VALORTOTAL )
FROM CO_CONTRATOFATURAMENTO A
WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
AND NOT A.STATUS = 6

UNION

SELECT SUM( A.VALORTOTAL )
FROM FT_ARMAZENAGEM A
WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
AND A.TIPO NOT IN (2,3)

Alguém pode me ajudar?


Tem como descrever melhor
Onde esta buscando os dados?
Como espera o resultado na saída?
Para que possa ficar mais claro, de como lhe ajudar.
Responder

05/08/2019

Isaque

Bom estou realizando esse select em duas tabelas e gostaria que o retorno do campo (valortotal) vinhe-se agrupado.
Do jeito que estou fazendo ele retorna o valor só que em duas linhas.

SELECT SUM( A.VALORTOTAL )
FROM CO_CONTRATOFATURAMENTO A
WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
AND NOT A.STATUS = 6

UNION

SELECT SUM( A.VALORTOTAL )
FROM FT_ARMAZENAGEM A
WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
AND A.TIPO NOT IN (2,3)

Alguém pode me ajudar?

SELECT (TABELA_CONTRATO.SOMACONTRATO (troque por sinal de mais) TABELA_ARMAZENAGEM.SOMAARMAZENAGEM) AS TOTAL
FROM (
    SELECT SUM( A.VALORTOTAL ) AS SOMACONTRATO
    FROM CO_CONTRATOFATURAMENTO A
    WHERE A.DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
    AND NOT A.DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
    AND NOT A.STATUS = 6
    ) TABELA_CONTRATO,

    (SELECT SUM( A.VALORTOTAL ) AS SOMAARMAZENAGEM
    FROM FT_ARMAZENAGEM A
    WHERE A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
    AND NOT A.DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
    AND A.TIPO NOT IN (2,3)
    ) TABELA_ARMAZENAGEM
WHERE 1=1

+
Eu não domino o UNION, veja se dessa forma vai apresentar uma soma correta


Testei e funcionou corretamente, ele retornou com a soma das duas tabelas em apenas uma linha, Muito obrigado!
Responder

05/08/2019

Isaque

você precisa somar as duas linhas obtidas. assim:
SELECT SUM(TOTAL) TOTALGERAL FROM
(	SELECT SUM(VALORTOTAL) TOTAL FROM CO_CONTRATOFATURAMENTO
	WHERE DATA >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1,0 )
	AND NOT DATA >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE())+1,0)
	AND NOT STATUS = 6

	UNION ALL

	SELECT SUM(VALORTOTAL) FROM FT_ARMAZENAGEM
	WHERE DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -1,0 )
	AND NOT DATAFECHAMENTO >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -0,0 )
	AND TIPO NOT IN (2,3)
) TAB





Muito obrigado, funcionou corretamente.
Responder

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

Aceitar