sql - 使用 SQL Server 中的表进行连接和求和的选择

标签 sql algorithm

Id       Item
--------------
1        ItemA 
2        ItemB
3        ItemC

itemid     Price
----------------
1          4
1          3
1          9
2          2
2          4
2          3

我如何从 2 个表中选择总和?像这样:

ItemA 16
ItemB 9
ItemC 0

最佳答案

您可以使用 LEFT JOIN JOIN 表并将聚合函数 SUM() 应用于 price 领域:

select t1.item, IsNull(sum(t2.price), 0) total
from table1 t1
left join table2 t2
  on t1.id = t2.itemid
group by t1.item

参见 SQL Fiddle with Demo

LEFT JOIN 将允许不在第二个表中的记录包含在最终结果中。我将 IsNull() 添加到 sum() 以用零替换任何 null 值。

结果:

|  ITEM | TOTAL |
-----------------
| ItemA |    16 |
| ItemB |     9 |
| ItemC |     0 |

关于sql - 使用 SQL Server 中的表进行连接和求和的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471974/

相关文章:

sql - 如何从pgsql中的列表中选择数据

sql - 加密 SQL Server 2008 r2 中现有表的列

sql - 具有多个 JOINS 和 GROUP BY CLAUSE 的查询中的 COUNT

algorithm - 通过python 3中的数字组合算法解码

.net - 在事务中使用 "GO"

mysql - 多个 WHERE IS NOT NULL 查询返回空行

c# - 如何在c#中实现一个循序渐进的按钮?

algorithm - 生成带有熵参数的伪随机流

c++ - LZW减压

java - 将 Map<Long, List<Foo>> 转换为 List<Foo>