Reputation: 291
My tabular data looks like
DECLARE @Tab TABLE(Name VARCHAR(10), VAL INT)
INSERT INTO @Tab
VALUES ('A', 25), ('B', 30), ('C', 236), ('D', 217), ('E', 19)
SELECT *
FROM @Tab
I want to show my result as:
Total:527 (A:25,B:30,C:236,D:217,E:19)
Upvotes: 0
Views: 70
Reputation: 82474
Here is a simple method using a sub query with FOR XML
:
SELECT 'Total:' + CAST(SUM(VAL) as varchar(10)) +' ('+
STUFF(
(
SELECT ',' + Name +':'+ CAST(VAL as varchar(10))
FROM @Tab
FOR XML PATH('')
), 1, 1, '') +')'
as result
FROM @Tab
Results:
result
Total:527 (A:25,B:30,C:236,D:217,E:19)
Upvotes: 1
Reputation: 46203
One method is with a FOR XML
subquery:
DECLARE @Tab TABLE(Name VARCHAR(10), VAL INT);
INSERT INTO @Tab VALUES('A',25),('B',30),('C',236),('D',217),('E',19);
SELECT 'Total:'
+ CAST(SUM(VAL) AS varchar(10))
+ ' ('
+ STUFF((SELECT ',' + Name + ':' + CAST(VAL AS varchar(10))
FROM @Tab
ORDER BY Name
FOR XML PATH(''), TYPE).value('.', 'nvarchar(MAX)'), 1, 1, '')
+ ' )'
FROM @Tab;
Upvotes: 0
Reputation: 96
SELECT SUM(VAL) FROM @tab
check out the following: https://www.w3schools.com/sql/sql_func_sum.asp
Upvotes: 0