直接Select出来是不可能的
怎么用存储过程来写?
或者有别的方法?

解决方案 »

  1.   

    同一条Record里一个ID有4个BB、CC,分别为BB1  CC1  BB2  CC2  BB3  CC3  BB4  CC4?
    这句话指的是表B中的记录吗?
      

  2.   

    To  wupangzi(无本之木) 
    指的是表A
      

  3.   

    最简单的是可以用uinon all来实现!
      

  4.   

    uinon all怎么做?
    能否写出来?
      

  5.   

    select a.id,a.s,b.num,a.bbn,a.ccn,b.bb,b.cc from
    (
      select ID,S,SS,BB1 bbn,CC1 ccn from a union all
      select id,s,ss,bb2,cc2 from a union all
      select id,s,ss,bb3,cc3 from a union all
      select id,s,ss,bb4,cc4 from a
    ) a,b
    where a.id=b.id试试这个还差多少,对你查询的结果不是很理解。最好解释一下是怎么得来的。
      

  6.   

    select a.ID aa,a.S ab,a.SS ac,b.Num ad,'' ae,'' af,'' ag,'' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,'' ab,'' ac,'' ad,a.BB1 ae,a.CC1 af,b.BB ag,b.CC ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,'' ab,'' ac,'' ad,a.BB2 ae,a.CC2 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,'' ab,'' ac,'' ad,a.BB3 ae,a.CC3 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all 
    select a.ID aa,'' ab,'' ac,'' ad,a.BB4 ae,a.CC4 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    order by aa;
      

  7.   


     回复人: ORARichard(没钱的日子......) ( ) 信誉:100  2005-01-31 20:49:00  得分: 0  
     
     
       select a.id,a.s,b.num,a.bbn,a.ccn,b.bb,b.cc from
    (
      select ID,S,SS,BB1 bbn,CC1 ccn from a union all
      select id,s,ss,bb2,cc2 from a union all
      select id,s,ss,bb3,cc3 from a union all
      select id,s,ss,bb4,cc4 from a
    ) a,b
    where a.id=b.id试试这个还差多少,对你查询的结果不是很理解。最好解释一下是怎么得来的。
      
    上面有些地方说得有误
    更新如下:
    表A中的BB、CC(实际是没有BB、CC的,表B中的BB/CC和表A的不是同一个)分为BB1  CC1  BB2  CC2  BB3  CC3  BB4  CC4
    BB、CC和BB1  CC1  BB2  CC2  BB3  CC3  BB4  CC4的逻辑关系是:
    BB=BB1+BB2+BB3+BB4
    CC=CC1+CC2+CC3+CC4
    表A中的一个ID写成5条record
    其中第一条record只有a.ID  a.S  a.SS  b.Num四个字段有值,a.BB1,a.BB2和b.BB,b.CC的位置为空。
    第二到第四条record,a.ID  a.S  a.SS  b.Num四个字段的位置为空,a.BB1,a.BB2和b.BB,b.CC的位置
    有值
    第6条到第10条record为第二个ID...
    如此类推最后变成如下:
    a.ID  a.S  a.SS  b.Num a.BB(n) a.CC(n)  b.BB  b.CC   
    a.ID  a.S  a.SS  b.Num   空     空      空  空     -->第一行 
     空  空  空   空    a.BB1  a.CC1   b.BB   b.CC    -->第二行
     空  空  空   空    a.BB2  a.CC2   b.BB   b.CC    -->第三行
     空  空  空   空    a.BB3  a.CC3   b.BB   b.CC    -->第四行
     空  空  空   空    a.BB4 a.CC4  b.BB   b.CC    -->第五行谢谢楼上各位的回复
      

  8.   


    乱了a.ID   a.S  a.SS  b.Num a.BB   a.CC    b.BB  b.CC   
    a.ID   a.S  a.SS  b.Num   空     空      空  空     -->第一行 
    空    空  空   空    a.BB1  a.CC1   b.BB   b.CC    -->第二行
    空    空  空   空    a.BB2  a.CC2   b.BB   b.CC    -->第三行
    空    空  空   空    a.BB3  a.CC3   b.BB   b.CC    -->第四行
    空    空  空   空    a.BB4 a.CC4  b.BB   b.CC    -->第五行
      

  9.   

    闲着没事弄这样的sql干什么?楼主解释一下,我们也需要了解它的用途呀
      

  10.   

    还是看着晕,不知道楼主这个查询是不是为了做一张报表,如果是的话,建议楼主不要用一句SQL去做,也没必要,通过相关查询得到所需数据,把数据放在合适的位置即可。
      

  11.   

    是为了做一张报表
    而且是Oracle自动做
    然后spool出成txt文件
      

  12.   

    明白楼主的意思。
    1。用union,可以添加一个索引的列,来表示自己从什么地方来。用来排序。就是我下面用的indexsort这个字段。(修改了 wupangzi(无本之木) ( )的句子。)select a.ID aa,1 indexsort,a.S ab,a.SS ac,b.Num ad,'' ae,'' af,'' ag,'' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,2 indexsort,'' ab,'' ac,'' ad,a.BB1 ae,a.CC1 af,b.BB ag,b.CC ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,3 indexsort,'' ab,'' ac,'' ad,a.BB2 ae,a.CC2 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all
    select a.ID aa,4 indexsort,'' ab,'' ac,'' ad,a.BB3 ae,a.CC3 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    uinon all 
    select a.ID aa,5 indexsort,'' ab,'' ac,'' ad,a.BB4 ae,a.CC4 af,'/' ag,'/' ah
    from 表A a,表B b 
    where a.ID = b.ID
    order by aa,indexsort;
    (因为没有环境,只是写了一个大概,可能有错误。只是提供一个我的想法。)2。可以做成一个PL/SQL,那样简单的多,传入一个ID,得到你想要的5行记录。外面循环。
      

  13.   

    刚刚才看到你上面的条件变掉了,那个SQL句子一样可以完成的。
    修改一下你需要选择的字段,一样可以完成的。赫赫。
      

  14.   

    我所说的“索引的列”,其实就是一个常数,就是我写的句子里面的indexsort这个字段。
    用来排序用。
    写法,我上面已经写了。
      

  15.   

    回复人: pipiright(pipiright) ( ) 信誉:100  2005-02-01 16:08:00  得分: 0  
     
     
       请问能否具体说说“索引的列”怎么回事?
    怎么写?
    谢谢。
      
     
    --
    就是说行号啦。 第一行:索引的列(indexsort)=1...依次类推。