关于oracle的这个SQL语句怎么写?

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:14:19
tb1
CARD_GROUP_NAME CARD_IDS
-------------- ---------------
测试 9,35,22,27
修改的查询 9,48,27

tb2
order_id CARD_ID fee
----------------- -------------
aaa 9 105
aaa 35 200
bbb 9 100

想得到结果: CARD_GROUP_NAME feesum
测试 405
修改的测试 205

在oracle中SQL怎样实现?

你这样设计表只有写程序来完成了,你的tb1设计得不好,好像节省了点存储空间,实际上给编程带来许多麻烦。

如果是别人做好的系统,我们不可能去修改tb1的设计,那么要做你那样的功能,只有写程序来实现了:
对tb1进行foreach,把每行的CARD_IDS取出来,转换为SQL语句的in条件,再对tb2进行sum查询

如果可能,我建议你修改tb1的设计,可以修改成下面这样,修改以后非常简单的语句实现你的目的“select CARD_GROUP_NAME,sum(fee) from tb1,tb2 where tb1.CARD_IDS = tb2.CARD_ID group by 1 ”:
CARD_GROUP_NAME CARD_IDS
-------------- ---------------
测试 9
测试 35
测试 22
测试 27
修改的查询 9
修改的查询 48
修改的查询 27