日期:2014-05-17  浏览次数:20721 次

小弟初学ora,今天碰到了一个问题,钻进了死胡同,来这里请教大家。
促销规则中的多级满减。我画一个表如下
促销规则号 行号 满足条件 减现
00000001 1 480 50
00000001 2 980 100
00000001 3 2800 300
00000001 4 5800 700

规则为 购物满480减50 一次类推
要写一个sql或者函数 展现为  
促销规则 满足条件 减现
00000001 480/980/2800/5800 50/100/300/700

------解决方案--------------------
SQL code

select 促销规则号,replace(wm_Concat(满足条件),',','/'),replace(wm_Concat(减现),',','/'),
  from table_name
 group by 促销规则号

------解决方案--------------------
10g以上试试如下:
SQL code
select 促销规则
  ,listagg(满足条件,'/') within group (order by 行号) 满足条件
  ,listagg(减现,'/') within group (order by 行号) 减现
from ...

------解决方案--------------------
不同版本,参考这里
------解决方案--------------------
create or replace procedure a(a in varchar2,b out number)
as 
c number;
d number;
e number;
begin
select 商品总价 into c from 商品表;
select 行号,减现 into d,e from 手绘表 where 满足条件>c;
b:=c-e;
end;
------解决方案--------------------
設置此表名為tSale
促銷規則:saleRuleNo
滿足條件:LevelMoney
減去額度:minusMoney
假如說該客戶的買的物品的價格是P,促銷序列號為N,則SQL語句如下:
select A.* from (select rownum rn,p-minusMoney from tSale where LevelMoney<P and saleRuleNo=N order by LevelMoney desc) A
where A.rn=1