情况如下:
我有两张表A和B。
A表:
---------------------
ID  ColumnName
1   我的字段B表:
---------------------
ID   columnID ColumnValue
1       1      内容1
2       1      内容2
3       1      内容3
========================================
我喜欢通过行转列显示成这样的内容:
----------------------------------------
我的字段内容1
内容2
内容3
......
B表的columnID和A表的ID是主外键关系。

解决方案 »

  1.   

    参照 http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?88143
      

  2.   

    如果我又有一个一列,怎么显示呢?比如:
    A表:
    ---------------------
    ID ColumnName
    2 我的女人B表:
    ---------------------
    ID columnID ColumnValue
    4 2 女人1
    5 2 女人2
    6 2 女人3
      

  3.   


    --A表
    SELECT * FROM YYQ3
    -------------------------------
    ID      NAME
    ---------------
    1 MY COL --B表
    SELECT * FROM YYQ4 order by id
    -----------------------------------
    ID      NAME    SID
    ------------------
    1 内容1 1
    2 内容2 1
    3 内容3 1
    4 内容4 1--
    SELECT DISTINCT Y3.NAME NAME_TEMP FROM YYQ3 Y3, YYQ4 Y4 WHERE Y3.ID = Y4.SID
    UNION ALL
    SELECT NAME_TEMP FROM (SELECT Y4.NAME NAME_TEMP FROM YYQ3 Y3, YYQ4 Y4 WHERE Y3.ID = Y4.SID ORDER BY Y4.ID)
    -----------------------------------------
    NAME_TEMP
    --------
    MY COL
    内容1
    内容2
    内容3
    内容4
      

  4.   

    用union,我鼓捣了一会儿没写出来
      

  5.   

    select decode(a.id,'我的字段',b.columnValue,null) "我的字段",
      decode(a.id,'我的字段2',b.columnValue,null) "我的字段2"     
    from a,b
    where a.id=b.columnID
      

  6.   


    这个写法有个问题:
    例如A表是:
    ID ColumnName
    1 我的字段
    2 我的字段2B表是:
    ---------------------
    ID columnID ColumnValue
    1 1 内容1
    2 1 内容2
    3 1 内容3
    4 2 内容4
    5 2 内容5
    6 2 内容6========================
    查询出来的结果会变成:我的字段  我的字段2
    内容1
    内容2
    内容3    
              内容4
              内容5
              内容6
    ===================
    能否变成:
    ==================
    我的字段  我的字段2
    内容1     内容3
    内容2     内容4
    内容3     内容5
              
      

  7.   

    --应该不会啊,第二个decode里也要改成 我的字段2
    select decode(a.id,'我的字段',b.columnValue,null) "我的字段",
      decode(a.id,'我的字段2',b.columnValue,null) "我的字段2"   
    from a,b
    where a.id=b.columnID
      

  8.   

    我是这样写的:
    select decode(a.id,'1',b.columnValue,null) "我的字段",
      decode(a.id,'2',b.columnValue,null) "我的字段2"   
    from a,b
    where a.id=b.columnID
    ================
    出来的结果就是:
    我的字段 我的字段2
    内容1    null
    内容2    null
    内容3    null
    null    内容4
    null    内容5
    null    内容6
      

  9.   

    --不好意思啊
    已写入 file afiedt.buf  1  with B as(
      2  select 1 ID,1 columnID,'内容1' ColumnValue from dual union all
      3  select 2, 1, '内容2' from dual union all
      4  select 3, 1, '内容3' from dual union all
      5  select 4, 2, '内容4' from dual union all
      6  select 5, 2, '内容5' from dual union all
      7  select 6, 2, '内容6' from dual)
      8  select max(我的字段),max(我的字段2)
      9  from (select decode(columnid,1,columnvalue,null) 我的字段,
     10        decode(columnid,2,columnvalue,null) 我的字段2,
     11       row_number() over(partition by columnid order by columnvalue) rn
     12       from b)
     13* group by rn
    scott@YPCOST> /MAX(  MAX(
    ----- -----
    内容1 内容4
    内容2 内容5
    内容3 内容6