SQLite Excel样式数据透视表

时间:2015-05-25 04:03:53

标签: sql sqlite

我在我的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查询来实现。

您的协助将在此事上受到高度赞赏。 提前致谢

2 个答案:

答案 0 :(得分:1)

您需要通过PartyA和PartyB进行分组,然后获取每个组的金额总和。使用以下查询:

SELECT PartyA, PartyB, SUM(Amount) TotalAmount FROM MyTable 
GROUP BY PartyA, PartyB;

在应用sum函数之前,它将PartyA和PartyB的匹配对分组。

SQLFiddle demo here.

<强> 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了解更多