我的表结构是这样的:一张横表 CONTENT 字段如下:
ID NAME AREA
0 ‘A’ ‘NJ’
1 ‘A’ ‘NJ’ 一张纵表 CONTENTVISUAL 字段如下: ID FIELDNAME FIELDVALUE
0 F1 V1
0 F2 V2
0 F3 V3
1 F1 V1
1 F2 V2
1 F3 V3
要求查询出的结果:
ID NAME AREA F1 F2 F3
0 'A' 'NJ' V1 V2 V3
1 'B' 'NJ' V1 V2 V3
我原来是把纵表乘三次先变成横表,然后查,这样效率太低了,请达人们指点一个效率较高的查询语句,小弟先谢了!!
ID NAME AREA
0 ‘A’ ‘NJ’
1 ‘A’ ‘NJ’ 一张纵表 CONTENTVISUAL 字段如下: ID FIELDNAME FIELDVALUE
0 F1 V1
0 F2 V2
0 F3 V3
1 F1 V1
1 F2 V2
1 F3 V3
要求查询出的结果:
ID NAME AREA F1 F2 F3
0 'A' 'NJ' V1 V2 V3
1 'B' 'NJ' V1 V2 V3
我原来是把纵表乘三次先变成横表,然后查,这样效率太低了,请达人们指点一个效率较高的查询语句,小弟先谢了!!
解决方案 »
- ORA-28547:连接服务器失败,可能是Oracle Net管理错误
- PLS-00357在此上下文中不允许表、视图或索引引用SWQ_BBS.NEXTVAL
- 有一个软件,后台数据库是Oracle,怎样截获这个软件对Oracle操作的sql?或者怎样知道这个软件的每个模块都用到了哪些表?
- 这种查询如何实现?
- VC++通过OCI向数据库插入数据的程序出现运行过程中出现停止
- 我在UNIX中不小心删除了一个dbf文件,现在oracle的sqlplus服务起不来了
- 请教各位oracle DB和爱好者高手们,由于我的数据库产生的归档日志太大,我要如何处理可以把以前产生的归档文件删除掉让它重新开始产生,但又不影响备以后数据库出问题后来恢复它。
- oracleText中的stoplist
- 新手教程Oracle
- 怎么查看当前表空间的管理方式
- 关联表的高级查询
- 超难sql升级版本!!!
ID,
NAME,
AREA,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F1') F1,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F2') F2,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F3') F3
FROM CONTENT A
ID,
NAME,
AREA,
MAX(DECODE(FIELDNAME, 'F1', FIELDVALUE, '')) F1,
MAX(DECODE(FIELDNAME, 'F2', FIELDVALUE, '')) F2,
MAX(DECODE(FIELDNAME, 'F3', FIELDVALUE, '')) F3
FROM
(
SELECT
A.ID,
A.NAME,
A.AREA,
B.FIELDNAME,
B.FIELDVALUE
FROM CONTENT A, CONTENTVISUAL B
WHERE A.ID=B.ID(+)
) T
GROUP BY ID, NAME, AREA
那么这句WHERE A.ID=B.ID(+)可以写成WHERE A.ID=B.ID吗??