CREATE TABLE test1
(
CID INTEGER NOT NULL,
MAID INTEGER NOT NULL,
CALLINGNUM VARCHAR2(10 BYTE) NOT NULL, --呼叫号码
)
CREATE TABLE test2
(
CID INTEGER NOT NULL
)
CREATE TABLE test3
(
MAID INTEGER NOT NULL,
PRICES NUMBER(5,2) NOT NULL--套餐费用
)
CREATE TABLE test4
(
CALLINGNUM VARCHAR2(20 BYTE) NOT NULL,--呼叫号码
CONCOST NUMBER NOT NULL--通话费用
)
当呼叫号码以00或10086开头时,直接读取CONCOST;当呼叫号码不是以00或10086开头时,且通话费用大于套餐费用时读取concost的总和,当通话费用小于套餐费用时直接读取套餐费用,最后将3类费用相加。
请帮忙用一个查询语句写出来,非常感谢
------解决方案--------------------
select t1.cid,
t1.callingnum,
case
when t1.callingnum like '00%' or t1.callingnum like '10086%' then
sum(t4.concost)
else
greatest(sum(t4.concost), t3.prices)
end
from test1 t1, test3 t3, test4 t4
where t1.maid = t3.maid(+)
and t1.callingnum = t4.callingnum
group by t1.cid, t1.CALLINGNUM, t3.prices
------解决方案--------------------