我有两张桌子
TABLE_1:
╔══════╦══════════╦═════════╗
║ Name ║ Date ║ Revenue ║
╠══════╬══════════╬═════════╣
║ A ║ 1/1/2001 ║ 20 ║
║ A ║ 1/2/2001 ║ 20 ║
║ B ║ 1/1/2001 ║ 40 ║
╚══════╩══════════╩═════════╝
TABLE_2:
╔══════╦══════╗
║ Name ║ Task ║
╠══════╬══════╣
║ A ║ Call ║
║ A ║ Foo ║
║ B ║ Bar ║
╚══════╩══════╝
所以我做了一个加入
SELECT sum(Revenue), t2.Name, T2.Task
FROM Table_1 as t1 JOIN Table_2 as t2 ON t1.Name = t2.Name
GROUP BY t2.Name
联接的结果表如下所示:
Result
Name Sum
A 80
B 40
问题是我希望A的总和结果为40.我应该如何修改我的查询?
答案 0 :(得分:2)
使用此查询:
self::
由于您没有使用SELECT Name, SUM(Revenue)
FROM Table_1
GROUP BY Name
列,我认为加入Table_1
与Table_2
无关。
答案 1 :(得分:2)
问题的根源是连接没有按照您的预期执行。通过在'name'上的两个表之间进行连接,您将创建重复项。删除查询中的group by子句,您将看到我的意思。
如前一个答案所述,联接(在这种情况下)是多余的。我建议看看比这更接近的事情。如何构建数据以便不会发生这种重复数据?
如果没有更多数据,我无法为您提供更多指导,但希望我的评论会指出您正确的方向,并且您将学习使用离散键值的宝贵经验。
答案 2 :(得分:0)
你必须在加入表之前计算总和,如:
select t1.Name, t1.sum, t2.task from
(
SELECT Name, sum(Revenue) as sum FROM Table_1 group by Name
) as t1
JOIN
Table_2 as t2 ON t1.Name = t2.Name