使用SQL查询在一列中显示不同的行和列数据

时间:2017-03-26 10:26:54

标签: sql sql-server

我的表格数据类似于

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

我想将结果显示为:

Total:527 (A:25,B:30,C:236,D:217,E:19)

3 个答案:

答案 0 :(得分:1)

这是一个使用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

结果:

result
Total:527 (A:25,B:30,C:236,D:217,E:19)

See live demo on rextester

答案 1 :(得分:0)

SELECT SUM(VAL) FROM @tab

查看以下内容: https://www.w3schools.com/sql/sql_func_sum.asp

答案 2 :(得分:0)

一种方法是使用FOR XML子查询:

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;