简体   繁体   English

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

[英]Show different row and column data in one column using SQL query

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)

Here is a simple method using a sub query with FOR XML : 这是使用带有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)

See live demo on rextester 观看Rester的现场演示

SELECT SUM(VAL) FROM @tab

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

One method is with a FOR XML subquery: 一种方法是使用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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM