gpt4 book ai didi

mysql - 在mysql中显示交替行

转载 作者:行者123 更新时间:2023-11-29 12:26:28 27 4
gpt4 key购买 nike

假设我有这些表:

    tblPerson

id | name |
1 | A |
2 | B |
3 | C |

tblB
id | personId | loan |
1 | 1 | 100 |
2 | 1 | 50 |
3 | 2 | 25 |

tblC
id | personId | payment |
1 | 1 | 20 |
2 | 1 | 10 |

如何产生此输出:

    Output
id | name | loan | payment | balance |
1 | A | 100 | 0 | 100 |
1 | A | 0 | 20 | 80 |
1 | A | 50 | 0 | 130 |
1 | A | 0 | 10 | 120 |
2 | B | 25 | 0 | 25 |

我需要输出来首先偿还贷款,然后再次支付贷款,依此类推。

最佳答案

此类查询 ( http://sqlfiddle.com/#!2/759df4/3/0 ) 将生成一组交错的贷款和付款。

SELECT id,name,loan,payment
FROM (
SELECT p.id id,
p.name name,
0 type,
b.id detail_id,
b.loan loan,
0 payment
FROM person p
JOIN b ON p.id = b.personId
UNION ALL
SELECT p.id id,
p.name name,
1 type,
c.id detail_id,
0 loan,
c.payment payment
FROM person p
JOIN c ON p.id = c.personId

) q
ORDER BY id, detail_id, type

然后,我想您可以使用变量来生成运行总计。但 Linoff 博士是对的(请参阅他的评论),您显示的数据集没有足够的信息可靠地交错贷款和付款记录。我已经使用 ID 字段来执行此操作。最后一个 ORDER BY 确实应该提及 posting_date 或其他一些信息,而不是 detail_id(如果您的表格中其他地方有它)

关于mysql - 在mysql中显示交替行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com