sql中的条件总和,根据字段中的条件从另一个表中获取正确的总和
Posted
技术标签:
【中文标题】sql中的条件总和,根据字段中的条件从另一个表中获取正确的总和【英文标题】:conditional sum in sql, get correct sum from another table based on a condition in a field 【发布时间】:2013-05-10 07:12:28 【问题描述】:我有一张这样的表 (tbl1),其中“商店 3”的销售额不正确。
**date store sale**
Mar, 2013 store 1 100
Apr, 2013 store 1 80
Mar, 2013 store 2 70
Mar, 2013 store 3 125
Apr, 2013 store 3 80
正确的金额在另一个表(tbl2)中:
**date store sale**
Mar, 2013 store 3 140
Apr, 2013 store 3 170
现在,我需要编写一个生成如下结果的查询:
**store total_sale**
store 1 180
store 2 70
store 3 310
我尝试了不同的方式来编写 CASE 语句,但总之我弄错了。我在这里简化了真正的问题,希望得到社区的帮助。谢谢!
【问题讨论】:
你的列date
的数据类型是什么?
文本(指月份)。为什么重要?
@saghar:你为什么要在文本列中设置日期。不要那样做。使用真正的date
数据类型。无论如何,您使用的是哪个 DBMS? Postgres?
【参考方案1】:
试试看,
SELECT a.Store,
COALESCE(c.TotalSale, b.TotalSale) AS TotalSale
FROM (SELECT DISTINCT Store FROM Table1) a
INNER JOIN
(
SELECT Store, SUM(sale) TotalSale
FROM Table1
GROUP BY Store
) b ON a.Store = b.Store
LEFT JOIN
(
SELECT Store, SUM(sale) TotalSale
FROM Table2
GROUP BY Store
) c ON a.Store = c.Store
SQLFiddle Demo
【讨论】:
以上是关于sql中的条件总和,根据字段中的条件从另一个表中获取正确的总和的主要内容,如果未能解决你的问题,请参考以下文章