select t1.rbbh,t2.mc,t1.s1 from t1,t2 where t1.pz=t2.pz(+)

解决方案 »

  1.   

    select a.rbbh,b.mc,a.s1 from t1 a,t2  b where a.pz=b.pz(+)
      

  2.   

    select 
    a.rbbh,
    decode(nvl(b.mc,'NULL'),'NULL','汇总项',b.mc),
    a.s1 
    from t1 a,t2  b where a.pz=b.pz(+)
      

  3.   

    select t1.rbbh,t2.mc,t1.s1 from t1,t2 where t1.pz=t2.pz(+)
      

  4.   

    drabit(square)  is right
      

  5.   

    解决方法上面的各位说得听清楚的了!有一点建议,不知道允不允许。就是在表2:(物品名称对照表)中加入一行PZ是0 的记录MC的值是汇总项
    如下:
    pz             mc(名称)
    1000           塑料
    2000           橡胶
    0              汇总项这样的DB,你的SQL会变得很简单。
    select t1.rbbh,t2.mc,t1.sl 
    from t1,t2
    where t1.pz = t2.pz同时,这个效率可比上面各位按你的要求做的SQL快很多了!呵呵,管见一二,见谅!
      

  6.   

    select t1.rbbh,
    decode(t2.mc,'NULL',汇总项)
    t1.s1 
    from t1,t2 where t1.pz=t2.pz(+)
    --------------------------------
    ok
      

  7.   

    doer_ljy(可战) ( ) 信誉:100 反对你的做法!暂不说方法好不好,首先用户的需求你不能做大的变动!其次数据库开发怕的就是结构的改变!第三就是如果建一张临时表加入你的列,你有考虑过效率吗?如果派生列很多呢,那唯一标示是不是要很严格地去定义呢??
      

  8.   

    kuailexq2000() ( ) 信誉:100   兄台的脚本有些小问题,呵呵,小弟修正一下!select t1.rbbh,
    decode(t2.mc,NULL,'汇总项',t2.mc),
    t1.sl
    from t1,t2 where t1.pz=t2.pz(+)
    order by t1.rbbh;运行结果:RBBH DECODE(T2.MC,NULL,'汇总项',T2.  SL
    ---- ------------------------------ ---
    1    塑胶                            10
    2    橡胶                            20
    3    汇总项                          30
    4    汇总项                          40表头的话需要另作程序改名了!
      

  9.   

    Select a.rbbh,decode(b.mc,null,"汇总项",b.mc) mc,a.sl from t1 a,t2 b where a.pz=b.pz or a.pz not in (select pz from t2);