我在我的C ++应用程序中使用SQLite作为我的数据库。我有一张类似下面给出的表
Day | PartyA | PartyB | Amount
--------------------------------
1 | X | Y | 25
1 | X | K | 10
1 | Y | M | 30
1 | Z | L | 20
2 | X | Y | 10
2 | X | K | 30
2 | Y | M | 50
2 | Z | L | 5
3 | X | K | 60
3 | Y | M | 15
我希望得到类似下表的内容。这类似于MS Excel数据透视表;最终表具有唯一的PartyA - PartyB对,名为TotalAmount的列具有上表中给出的金额值的总和。
PartyA | PartyB | TotalAmount
--------------------------------
X | Y | 35
X | K | 100
Y | M | 95
Z | L | 25
虽然C / C ++ API接口允许实现它,但我希望通过使用SQL查询来实现。
您的协助将在此事上受到高度赞赏。 提前致谢
答案 0 :(得分:1)
您需要通过PartyA和PartyB进行分组,然后获取每个组的金额总和。使用以下查询:
SELECT PartyA, PartyB, SUM(Amount) TotalAmount FROM MyTable
GROUP BY PartyA, PartyB;
在应用sum函数之前,它将PartyA和PartyB的匹配对分组。
<强> COMMENT:强>
你提到过&#39; pivot&#39;在你的头衔。但是从上面的查询中可以看出,您不需要根据需要使用数据透视表。此外,SQLite不支持pivot功能。但是,可以采用枢轴式解决方法as shown in this question。刚刚添加到这里阅读。
答案 1 :(得分:1)
这将是sql方式这样做
select PartyA,PartyB, sum(Amount) as TotalAmount from <giventable>
group by PartyA, PartyB
另请参阅here了解更多