我有一个包含此信息的sqlite数据库
| 标识符|件|美元|年份|
| - -|- -|- -|- -|
| 10个|二十五个|一百五十个|小行星2021|
| 10个|二十个|一百六十|小行星2021|
| 10个|二十二个|一百二十|小行星2022|
| 十一|十二|一百三十|小行星2021|
| 十一|10个|100个|小行星2022|
我想得到这个
| 标识符|电脑2021|美元2021年|2022年|美元2022|
| - -|- -|- -|- -|- -|
| 10个|四十五|三百一十|二十二个|一百二十|
| 十一|十二|一百三十|10个|100个|
我得到了这个:SELECT id, SUM(pcs), SUM(dollars) FROM Table GROUP BY id
但是我找不到方法来分别得到每年的总和。
我试了一下:SELECT id, (SELECT SUM(pcs) FROM Table WHERE id=id AND year=2021) AS pcs2021, (SELECT SUM(dollars) FROM Table WHERE id=id AND year=2021) AS dollars2021, (SELECT SUM(pcs) FROM Table WHERE id=id AND year=2022) AS pcs2022, (SELECT SUM(dollars) FROM Table WHERE id=id AND year=2022) AS dollars2022, FROM Table GROUP BY id
但它不起作用.....
谢谢你的帮助。
1条答案
按热度按时间u4vypkhs1#
使用:-
结果:-
附加(重新评论)
我的问题是,当我想把不同的列与每年的值的总和
您遇到的一个问题是id=id始终为true,因此您将对该年的所有行求和,而不考虑id,并获得结果(如果语法正确):-
也就是说,当您要与主查询当前正在处理的id进行比较时,id是子查询的id。
为此,您可以使用
AS
子句为主查询给予一个别名,然后引用别名的id so(其中主查询的别名为**a
**):-结果是:
*注意如果未将Table括起来,则将Table用作表名将导致语法错误,因为Table是SQLite关键字。