描述:如果我又一张表:
-------------------------
FIELD1 FIELD2 FIELD3
-------------------------
规定FILD1填充了值,才能填充FILD2,也就是说如果FILED2有值的话FIELD肯定有值,FILED3可有可无,一次类推,这里只写了3个字段实际可以有更多,但是填写规则必须满足前面的要求。
问题1:又没有办法可以一次查出一条记录中多少个FIELD1....N字段被使用现在小弟使用的游标来判断的;
问题2:有没有办法把一条这样的一条记录通过通过查询以后以FIELDNAME value的形式显示出来:如有一条记录为:
FIELD1 FIELD2 FIELD3
你好 谢谢 帮助最终查询出来的结果为:
FIELDNAME value
FIELD1 你好
FIELD2 谢谢
FIELD3 帮助或者干脆把这条记录直接查询出这样的结果也可以:“你好,谢谢,帮助”问题2可以描述为:把一行记录转换成
-------------------------
FIELD1 FIELD2 FIELD3
-------------------------
规定FILD1填充了值,才能填充FILD2,也就是说如果FILED2有值的话FIELD肯定有值,FILED3可有可无,一次类推,这里只写了3个字段实际可以有更多,但是填写规则必须满足前面的要求。
问题1:又没有办法可以一次查出一条记录中多少个FIELD1....N字段被使用现在小弟使用的游标来判断的;
问题2:有没有办法把一条这样的一条记录通过通过查询以后以FIELDNAME value的形式显示出来:如有一条记录为:
FIELD1 FIELD2 FIELD3
你好 谢谢 帮助最终查询出来的结果为:
FIELDNAME value
FIELD1 你好
FIELD2 谢谢
FIELD3 帮助或者干脆把这条记录直接查询出这样的结果也可以:“你好,谢谢,帮助”问题2可以描述为:把一行记录转换成
解决方案 »
- 求类似于PL/SQL中drop表的方法
- [Oracle 11g]Win 7 安装时 使用DBCA创建配置数据库时报错
- 用trigger触发过程后,结果与手工执行过程不同???
- 判断一个字段问题
- 为什么我的索引没有被使用到?
- 两表关联怎么取一表中的最早的版本记录的sql语句
- 过来人请留步!
- 请教,如何实现在oracle中实时的从另一个数据库的一张表中取得新增数据,不胜感激
- 建议csdn增加一个功能,就是在发帖的时候让发帖者设定预计结帖日期,让结帖者承诺在什么时候结帖,到期不结帖者就扣除此人的信誉分。跟贴
- oracle数据库学习
- 在请教一个函数的用法 translate
- 新手求助一个ebs forms的问题
问题一:有没有办法能够知道哪些 filed 字段有值
问题二:列传行是这样吗?
-- 查找有值的FIELD数量
SELECT NVL2(FIELD1,0,1) + NVL2(FIELD2,0,1) + NVL2(FIELD3,0,1) ... + NVL2(FIELDn,0,1) FROM TABLE1-- 合并FIELD
SELECT RTRIM(NVL2(FIELD1,'',FIELD1||',') + NVL2(FIELD2,'',FIELD2||',') + NVL2(FIELD3,'',FIELD3||',') ... + NVL2(FIELDn,'',FIELDn),',') FROM TABLE1
-- 列转行
SELECT 'FIELD1',FIELD1 FROM TABLE1 UNION ALL
SELECT 'FIELD2',FIELD2 FROM TABLE1 UNION ALL
SELECT 'FIELD3',FIELD3 FROM TABLE1 UNION ALL
...
SELECT 'FIELDn',FIELDn FROM TABLE1
id FIELD1 FIELD2 FIELD3 加一个ID 唯一性
然后用楼上的union 后面加个条件 查询当列不为空
SELECT id as id,'FIELD1' as filed,FIELD1 as value from table1 FROM TABLE1 UNION ALL
SELECT id as id,'FIELD2' as filed,FIELD2 as value from table1 where field2 is not null UNION ALL
SELECT id as id,'FIELD3' as filed,FIELD3 as value from table1 where field3 is not null UNION ALL转了之后的表数据存为A表(过滤了为空的字段)如下
id filed value
1 FILED1 您好
1 FILED2 谢谢
1 FILED3 帮助
2 FILED1 您好2
2 FILED2 谢谢2
3 FILED1 您好3
....这样就行转列了
然后再列转行
select a.id,wm_concat(a.filed||‘=’||a.value) from a 或者你不新建A表也可以,将前面那段SQL括号当一个表使用