sql - 将多行中的值求和到一行中

标签 sql sql-server tsql sql-server-2012

在 SQL Server 2012 中,我有一个表 my_table,其中包含列 state、month、IDsales

我的目标是将具有相同州、月份、ID 的不同行合并到一行中,同时将这些选定行的 sales 列求和到合并的行中。

例如:

state    month    ID    sales
-------------------------------
FL       June     0001   12,000
FL       June     0001    6,000
FL       June     0001    3,000
FL       July     0001    6,000
FL       July     0001    4,000  
TX       January  0050    1,000
MI       April    0032    5,000
MI       April    0032    8,000
CA       April    0032    2,000

这就是我应该得到的

state    month    ID    sales
-------------------------------
FL       June     0001   21,000
FL       July     0001   10,000  
TX       January  0050    1,000
MI       April    0032   13,000
CA       April    0032    2,000

我做了一些研究,发现自连接应该做与我应该得到的类似的事情。

最佳答案

除非我遗漏了要求中的某些内容,否则为什么不直接使用带有GROUP BY的聚合函数:

select state, month, id, sum(sales) Total
from yourtable
group by state, month, id
order by id

参见SQL Fiddle with Demo

结果是:

| STATE |   MONTH | ID | TOTAL |
--------------------------------
|    FL |    July |  1 | 10000 |
|    FL |    June |  1 | 21000 |
|    CA |   April | 32 |  2000 |
|    MI |   April | 32 | 13000 |
|    TX | January | 50 |  1000 |

关于sql - 将多行中的值求和到一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940397/

相关文章:

sql ORDER BY 多个值的特定顺序?

mysql - 在数据库中将 nvarchar(MAX) 更改为 nvarchar(n)

sql-server - FOR XML ... TYPE 比 FOR XML 慢多少?

sql-server - INNER JOIN 优于 CROSS APPLY

c++ - SQLite增量整数主键和唯一约束冲突

PHP:使用什么?

php - PHP MYSQL PREPARE语法问题(意外T_STRING)

sql-server - 在使用 insert from select 之前如何检查重复项

c# - 从 Entity Framework 发送阿拉伯语单词时存储过程不返回结果

sql-server - SQL 服务器 : create database diagram by query