SQL Server:将具有相似列值的行分组为一行,然后将相应的行求和

时间:2019-03-07 14:12:03

标签: sql sql-server

我正在编写一个查询,以将具有相同起始字母的列分组为一个列,然后将下一个列及其相应的行值之和分组。示例如下。尝试了大小写和总和,但不起作用。这可能吗。

Col1  |Col2  |Col3
------+------+------
axxx  |1     |z
axyx  |2     |p
bxxy  |1     |q
bxyx  |2     |y
cxxy  |1     |t
cxyx  |2     |t

查询应返回如下

FirstLetter |Total(Sum of Col2)
------------+------------------
a           |3
b           |3
c           |3

第一列是以相同首字母开头的字符串 第二列给出col2中所有值的总和,而col1值以相同的第一个字母开头

这可能吗?

2 个答案:

答案 0 :(得分:5)

SQL已有left函数已有一段时间了。

select left(Col1, 1), sum(Col2)
  from Table_Name
 group by left(Col1, 1)

答案 1 :(得分:1)

通过使用子字符串https://www.w3schools.com/sql/func_sqlserver_substring.asp

create table #1 (col1 varchar(10), col3 varchar(10))

insert into #1 values ('axxx','1'),('axyz','2')

SELECT  substring(col1, 1, 1) AS col1_substring, sum(col3) AS col2count
FROM    #1
GROUP   BY substring(col1, 1, 1);