我想如何在SQLite中创建条件SUM。我创建了这个例子:
SQL ACTION之前的表
ID1 ID2 Value TOTAL
-------------------------------
1 None
1 7.00 None
1 1.00 None
1 1.00 None
1 3.00 None
1 2.00 None
2 None
2 5.00 None
2 1.00 None
3 None
3 7.00 None
3 1.00 None
3 1.00 None
3 3.00 None
上表是尚未修改的数据。如果ID1 = ID2,我想得到值的总和,并将结果发布到' TOTAL'列。
SQL操作后的表
ID1 ID2 Value TOTAL
-------------------------------
1 14.00
1 7.00 None
1 1.00 None
1 1.00 None
1 3.00 None
1 2.00 None
2 6.00
2 5.00 None
2 1.00 None
3 12.00
3 7.00 None
3 1.00 None
3 1.00 None
3 3.00 None
我试过这个没有成功:
curOperations.execute('UPDATE TABLE1 SET TOTAL =
(SELECT SUM(CASE WHEN ID1 = ID2 THEN Value ELSE 0 END) as Value FROM TABLE1)')
修改
所以我找到了一种很容易获得SUM的方法:
SELECT ID2, SUM(Value) FROM Table GROUP BY ID2
我得到了这张表:
ID2 SUM(Value)
------------------------
1 14.00
2 6.00
3 12.00
我现在唯一要做的就是将这些值传递给' main'表
有什么想法吗?
答案 0 :(得分:1)
您必须使用带子查询的更新 - 唯一棘手的部分是别名必须位于子查询上:
curOperations.execute('''UPDATE table1 SET total = (SELECT SUM(value)
FROM table1 int
WHERE int.id2 = table1.id1)
WHERE id1 IS NOT NULL''')