Mysql 根据以前的记录对Concat列进行分组
Mysql 根据以前的记录对Concat列进行分组,mysql,stored-procedures,group-concat,Mysql,Stored Procedures,Group Concat,在我的下一份报告中,我面临着一个相当困难的问题。我有一些线索,但似乎无法用正确的查询来总结。我试过在一组数字上使用Group\u Concat,但没有得到想要的结果
以完全所有权、自由保有权和用益权交换股份(谷歌翻译了这些术语)
个人A购买100股,1-100股完全所有权
个人A出售20股的完全所有权(FO),编号81-100
个人A购买20股的自由保有权(FH),编号81-100
个人B购买20股收益权(美国),编号81-100
个人A购买100股的完全所有权(FO),编号201-300
这些
在我的下一份报告中,我面临着一个相当困难的问题。我有一些线索,但似乎无法用正确的查询来总结。我试过在一组数字上使用Group\u Concat
,但没有得到想要的结果
以完全所有权、自由保有权和用益权交换股份(谷歌翻译了这些术语)
个人A购买100股,1-100股完全所有权
个人A出售20股的完全所有权(FO),编号81-100
个人A购买20股的自由保有权(FH),编号81-100
个人B购买20股收益权(美国),编号81-100
个人A购买100股的完全所有权(FO),编号201-300
这些交易后的情况:
- 个人A:180股完全所有权,编号1-80和编号201-300
- 个人A:20股不动产,编号81-100
- 个人B:20股用益权,编号81-100
--在数据库中,这些事务将存储为:
+----+-------------+-----------+------------+------------+------------+------+
| ID | Shareholder | Quantity | IsPurchase | NumberFrom | NumberTill | Type |
+----+-------------+-----------+------------+------------+------------+------+
| 1 | Person A | 100 | true | 1 | 100 | FO |
| 2 | Person A | 20 | false | 81 | 100 | FO |
| 3 | Person A | 20 | true | 81 | 100 | FH |
| 4 | Person B | 20 | true | 81 | 100 | US |
| 5 | Person A | 100 | true | 201 | 300 | FO |
+----+-------------+-----------+------------+------------+------------+------+
非常感谢
+-------------+-----------+-----------+-----------+----------------+------------+------------+
| Shareholder | Shares_FO | Shares_FH | Shares_US | Numbers_FO | Numbers_FH | Numbers_Us |
+-------------+-----------+-----------+-----------+----------------+------------+------------+
| Person A | 180 | 20 | | '1,80;201,300' | '81,100' | |
| Person B | | | 20 | | | '81,100' |
+-------------+-----------+-----------+-----------+----------------+------------+------------+
SELECT Shareholder,
SUM(CASE WHEN Type = 'FO' THEN
CASE WHEN IsPurchase THEN Quantity ELSE -Quantity END
END) AS Shares_FO,
SUM(CASE WHEN SRI_ID = 'FH' THEN
CASE WHEN IsPurchase THEN Quantity ELSE -Quantity END
END) AS Shares_FH,
SUM(CASE WHEN SRI_ID = 'US' THEN
CASE WHEN IsPurchase THEN Quantity ELSE -Quantity END
END) AS Shares_US