有这样两张表:
Customer(客户信息表):
cid(客户编号) cname(客户姓名)
1 wlj
2 yx
3 zxfCusttype(客户类型表):
tid(类型编号) tname(类型名称) minamt(最低认购金额) maxamt(最高认购金额)
1 A 10000 100000
2 B 100000 1000000
3 C 1000000 10000000Redmpurc(交易信息表):
seqno(交易号) cid(客户编号) applyamt(认购金额)
RP001 1 1000
RP002 2 346734
RP003 3 87570000
RP004 2 765000
RP005 2 119000要求:
1、查询所有交易信息,并根据applyamt判断客户类型;
2、客户类型是根据认购金额的大小判断的(minamt<applyamt<=maxamt);
3、显示字段为:seqno cid applyamt tname哪位大侠知道,有没有一种函数,可以在select时,判断其中的一个字段在另一表里属于哪个区间,然后根据区间,显示相应的类型名称?
Customer(客户信息表):
cid(客户编号) cname(客户姓名)
1 wlj
2 yx
3 zxfCusttype(客户类型表):
tid(类型编号) tname(类型名称) minamt(最低认购金额) maxamt(最高认购金额)
1 A 10000 100000
2 B 100000 1000000
3 C 1000000 10000000Redmpurc(交易信息表):
seqno(交易号) cid(客户编号) applyamt(认购金额)
RP001 1 1000
RP002 2 346734
RP003 3 87570000
RP004 2 765000
RP005 2 119000要求:
1、查询所有交易信息,并根据applyamt判断客户类型;
2、客户类型是根据认购金额的大小判断的(minamt<applyamt<=maxamt);
3、显示字段为:seqno cid applyamt tname哪位大侠知道,有没有一种函数,可以在select时,判断其中的一个字段在另一表里属于哪个区间,然后根据区间,显示相应的类型名称?
select a.seqno,a.cid,a.applyamt,
(select tname from Custtype b where b.minamt < a.applyamt and applyamt <= b.maxamt) as tname
from Redmpurc a
客户类型是根据认购金额的大小判断的(minamt<applyamt<=maxamt
applyamt是根据客户编号分组后的sum值WITH Custtype AS
( SELECT 1 AS tid, 'A' AS tname, 10000 AS minamt, 100000 AS maxamt FROM dual UNION
SELECT 2, 'B', 100000, 1000000 FROM dual UNION
SELECT 3, 'C', 1000000, 10000000 FROM dual
),
Redmpurc AS
(
SELECT 'RP001' AS seqno, 1 AS cid, 1000 AS applyamt FROM dual UNION
SELECT 'RP002', 2, 346734 FROM dual UNION
SELECT 'RP003', 3 ,87570000 FROM dual UNION
SELECT 'RP004', 2, 765000 FROM dual UNION
SELECT 'RP005', 2, 119000 FROM dual )
SELECT seqno, cid, applyamt, tname FROM (
SELECT seqno,cid,applyamt, SUM(applyamt) OVER(PARTITION BY cid) AS sum_applyamt
FROM Redmpurc) Redmpurc
LEFT JOIN Custtype
ON sum_applyamt BETWEEN minamt AND maxamt运行结果:
------------------------
RP001 1 1000
RP002 2 346734 C
RP005 2 119000 C
RP004 2 765000 C
RP003 3 87570000
我研究研究哈!