情况如下:
我有两张表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是主外键关系。
我有两张表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是主外键关系。
A表:
---------------------
ID ColumnName
2 我的女人B表:
---------------------
ID columnID ColumnValue
4 2 女人1
5 2 女人2
6 2 女人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
decode(a.id,'我的字段2',b.columnValue,null) "我的字段2"
from a,b
where a.id=b.columnID
这个写法有个问题:
例如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
select decode(a.id,'我的字段',b.columnValue,null) "我的字段",
decode(a.id,'我的字段2',b.columnValue,null) "我的字段2"
from a,b
where a.id=b.columnID
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
已写入 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