各位大虾,小弟有事请教:我想知道一个商品的执行售价,比如超市里的数据表里,有促销价,和正常售价,促销价优先于正常售价,也就是说有促销时候,促销价格就是执行价格,没促销正常售价就是执行价格.
现知道:正常售价的表为:    ER0101(商品编码)   ER0102(商品名称)       ER127(正常售价)   主表为ER001促销表为:          CXJ0103(商品编码))                         CXJ0105(促销价格)    主表为CXJ001我现在想想通过语句得出以下结构,请问各位,这语句该怎么写,谢谢各位的帮忙
商品编码      商品名称                    执行价格A             光明牛奶                  13.6(正常价格)
B             营养快线                   5.9(正常价格)
C             飘柔500M                  12.8(促销价格)
注:执行价格的意思是有促销就是促销价格(PCX0105),无促销则是正常价格(DG0127)
请各位帮下忙,先谢谢了,

解决方案 »

  1.   

    select NVL(CXJ0105,ER127) from er001,CXJ001 WHERE ER0101=CJ0103
      

  2.   

    select ER001.ER0101 "商品编码", ER0101.ER0102 "商品名称", nvl(CXJ001.CXJ0105, ER001. ER127) "执行价格" from ER001, CXJ001 where ER001.ER0101=CXJ001.CXJ0103(+);
      

  3.   

    不会吧。这点。上面两条都可以做到呀。上面的不同,不过是外连接的不同,考虑到有可能有的产品在cxj这个表里没有记录的情况。
      

  4.   

    哦,是的哦,有些商品在CXJ没有记得,但是上面 cosio的回复,没有错误,确实是可以运行,可能里面有些数据,我没注意看吧.
    inthirties,谢谢你,能再帮我一下吧?我想知道执行价格取的是促销价格还是正常售价!~
      

  5.   

    查询的时候加个字段显示可以么select ER001.ER0101 "商品编码", ER0101.ER0102 "商品名称", nvl(CXJ001.CXJ0105, ER001. ER127) "执行价格", nvl2(CXJ001.CXJ0105, '是', '否') "已打折" from ER001, CXJ001 where ER001.ER0101=CXJ001.CXJ0103(+);
      

  6.   

    select ER001.ER0101 "商品编码", ER0101.ER0102 "商品名称", 
    nvl(CXJ001.CXJ0105, ER001. ER127) "执行价格" ,
    decode(CXJ001.CXJ0105,null,'正常价格,'促销价格') "价格状况"
    from ER001, CXJ001 where ER001.ER0101=CXJ001.CXJ0103(+);
      

  7.   

    正确Oracle SQL语句:select 
    ER001.ER0101,ER0101.ER0102,
    NVL(C.CXJ0105, E.ER127) "执行价格",
    decode(C.CXJ0105,null,'正常价格','促销价格') "价格类型"
    from 
    ER001 E , CXJ001 C
    where E.ER0101=C.CXJ0103(+)
    /
      

  8.   

    感谢各位的回复,问题已经解决,syc840和inthirties的答案正确,运行无错误,
    也谢谢yz394777014和cosio的帮助.yz394777014的答案select 
    ER001.ER0101,ER0101.ER0102,
    NVL(C.CXJ0105, E.ER127) "执行价格",
    decode(C.CXJ0105,null,'正常价格','促销价格') "价格类型"
    from 
    ER001 E , CXJ001 C
    where E.ER0101=C.CXJ0103(+)
    我不知道,你加的"E"和"C"是什么意思,我把他们删除就可以运行了,谢谢你