我目前正在涉足SQL,希望能为我造成的一个问题提供一些帮助。
为了练习编程,我制作了一个借条应用程序。下面是我存储IOU记录的表格(忽略一些相关列)。这个表允许用户说“嘿,你欠我X金额”和“我欠你X金额”。
| Creator | Type | User_Involved| Amount |
|:-----------|------------:|:------------:|
| 1 | 0 | 2 | 3.0
| 2 | 0 | 1 | 4.0
| 3 | 1 | 1 | 5.0注意: Type代表用户是否有“借出或请求的钱”。0=借出1=请求
目标:我的目标是获得所有用户及其总欠款(负或正)的列表。
这变得相当困难,因为我不能做简单的group by,因为有两个列需要分组(创建者和User_Involved)。
我设法编写了一个给出正确结果的SQL查询,但是我无法将其转换为Hibernate版本。
这个问题主要归结为JPA无法执行联合。
有问题的查询:
/** assumption 1 is owed to creator **/
select sum(owed_to_you) as owed_to_you, friend_id
from
(
/** you created **/
select sum(CASE WHEN transaction_type = 0 THEN -amount ELSE amount END) as owed_to_you, friend_involved as friend_id
from iou
where
creator = 3
group by friend_involved
union all
/** someone else created **/
select sum(CASE WHEN transaction_type = 1 THEN -amount ELSE amount END) as owed_to_you, creator as friend_id
from iou
where
friend_involved = 3
group by creator) as theunion
group by friend_id除了将所有的借条加载到内存中并以这种方式进行排序之外,我完全被难住了。我今天做了很多研究,学到了很多东西,但是,我仍然没有取得进展。
任何帮助都将不胜感激。
https://stackoverflow.com/questions/41346562
复制相似问题