Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Gostaria de somar os valores das colunas D, D1, V1, V2, V3, V4 no final da tabela, é possivel ?
Estou utilizando a seguindo query:
SELECT
CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D],
COUNT(Discos.Discos_lng_Sequencia) AS [D1],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4]
FROM Discos
Group By Discos.Discos_sdt_Data
Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
Order By [D]
Com este codigo consigo a somatorio conforme imagem, porem, queria adicionar um a somatoria total no final das colunas.

Por favor, poderiam me ajudar.Obrigado pelo retorno Motta, porem ainda nao consegui, deste jeito que você mandou apresento o seguinte erro:
Msg 156, Level 15, State 1, Line 23
Incorrect syntax near the keyword 'Order'.
não conheço sqlserver a fundo , talvez a tabela virtual tenha de ter alias , tente
...
Select data,D, D1, V1, V2 , V3 , V4,
(D+D1+V1+V2+V3+V4) tot
From
(
SELECT
CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D],
COUNT(Discos.Discos_lng_Sequencia) AS [D1],
REPLACE(RTRIM(LTRIM (CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4]
FROM Discos
Group By Discos.Discos_sdt_Data
Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
) virtual
Order by D
ainda, nao conegui, :/
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '500,00' to data type int.
acredito ser algum problema de conversao das colunas
D, D1, V1, V2 , V3 , V4
Limpe toda as conversões na hora de somar , amanhã se tiver tempo edito esta sql no pc , estou no tablet agora.
talvez falte um convert
SELECT
CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D],
COUNT(Discos.Discos_lng_Sequencia) AS [D1],
REPLACE(RTRIM(LTRIM (CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4] ,
(
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) +
COUNT(Discos.Discos_lng_Sequencia) +
ROUND(SUM(Discos.Discos_mon_Valor), 2))+
ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)) +
ROUND(Sum (Discos.Discos_mon_Tarifa), 2)) +
ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)) ) [TOT]
FROM Discos
Group By Discos.Discos_sdt_Data
Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
) virtual
Order by DBOM DIA MOTTA,
Obrigado pela ajuda!!
Agora nao deu erro, porem o resultado que obtive nao é o esperado.
O resultado atual esta aparecendo a soma da linha da tabela. O que quero é a soma de cada COLUNA da tabela, veja a imagem, creio que da pra entender melhor:
(escrevi coluna D1, mas no exemplo esta selecionada a coluna D)
SELECT
CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D],
COUNT(Discos.Discos_lng_Sequencia) AS [D1],
REPLACE(RTRIM(LTRIM (CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4] ,
(
COUNT(DISTINCT Discos.Pessoa_lng_Codigo) +
COUNT(Discos.Discos_lng_Sequencia) +
ROUND(SUM(Discos.Discos_mon_Valor), 2))+
ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)) +
ROUND(Sum (Discos.Discos_mon_Tarifa), 2)) +
ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)) ) [TOT]
FROM Discos
Group By CUBE (Discos.Discos_sdt_Data)
Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
) virtual
Order by DBom dia Motta,
Obrigado pela ajuda,
Consegui com o código abaixo:
SELECT
CASE
WHEN (Discos.Discos_sdt_Data is not null) THEN CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103)
ELSE 'Total'
END AS D,
COUNT(distinct(Discos.Pessoa_lng_Codigo)) as [D1],
COUNT(Discos.Pessoa_lng_Codigo) AS [V1],
ROUND(SUM(Discos.Discos_mon_Valor), 2) as [V2],
ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2) AS [V3],
ROUND(Sum (Discos.Discos_mon_Tarifa), 2) As [Tarifa Discos],
ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2) AS [V4]
FROM Discos
WHERE Discos.Discos_sdt_Data between '2019-01-01' And '2019-01-10'
GROUP BY Discos.Discos_sdt_Data WITH cube
ORDER BY [D]
Resultado:
Unica coisa que estou resolvendo é a coluna D1, o total dela não esta batendo, estou verificando, mas é isso.
Obrigado.
até mais!!

Uma forma