请教一个sql语句,试了好久没成功

问题描述

写自己在pl/sql中写过函数实现过,但是效率很低下,数据量一大,直接导致weblogic等待状态要实现的功能是 多条数据,有个相同的主ID,有字段 a, b, c首先将abc散列数据合并成一列,再将多行数据根据ID,合并成一行具体如下:OrderID MainID A B C1 1 你 好 啊2 1 朋 友 !3 2 我 很 好4 2 谢 谢 。要求最后得到两个字段:MainID result1 你好啊朋友!2 我很好谢谢。问题补充:select mainid, substr(max(sys_connect_by_path(aa, ',')), 2) phnum from (select a.*, row_number() over(partition by mainid order by mainid) rn from (select mainid, a|| ',' || b||','||c as aa from cpd_bagcheckdtl) a) group by mainid start with rn = 1connect by rn - 1 = prior rn and mainid = prior mainid问题补充:如果字段中查出有 特殊符号比如:/ 等,sys_connect_by_path会报错目前只能写出这个语句了

解决方案

可以写个存储过程,将某个MainID的内容按OrderID拼接成一句话,在sql中用游标调用该存储过程。
解决方案二:
把你写的贴出来,看看哪里可以改进

时间: 2024-09-20 20:32:15

请教一个sql语句,试了好久没成功的相关文章

sql语句-请教一个SQL语句如何写?

问题描述 请教一个SQL语句如何写? 求助大侠:表A中有字段a,b,c,d,e,f,但并不是所有字段都一定有值,其中有值字段原值为'201xxxx'现在要将有值字段由'201xxxx'替换为'2001xxxx',无值字段保留为空,请问SQL语句如何写?(其中'201xxxx'中的xxxx代表数字,比如20101或201010101,位数不定,也可能只为201)请赐教. 解决方案 update [A] set [a] = left(a2)+'0'+right(alen(a)-2) [b] = le

请教一个sql语句该怎么写

问题描述 请教一个sql语句该怎么写 table_A id a b c d table_B_id tabel_B id e f g 怎么查询的到table_A_id:这一行的able_B_id,的对应的tabel_B行 中e等于特定值.有点乱希望理解. 解决方案 select * from table_A a join table_B b on a.table_B_id = b.id where b.e = xxx; xxx为条件 解决方案二: 确实有点乱,想帮你都帮不了

sql-求助:请教一个SQL语句的算法

问题描述 求助:请教一个SQL语句的算法 业务逻辑:在财务中,在一个结算周期内的结算金额没有达到结算限额,则此次不做结算,将此次结算金额累计到下一个结算周期内结算,直到满足结算限额才结算.其中每一个合同的计算限额不同. 举例:已知的合同号001的结算限额为200 ,合同号002的结算限额为300 合同号A 结算日B 结算金额C 想得到的结果D 001 1.1 100 0 001 2.1 110 210 001 3.1 120 0 001 4.1 130 250 001 5.1 140 0 001

sql-新手,请教一个SQL语句

问题描述 新手,请教一个SQL语句 如图,我想取出字段(包括字段分票如第一个图)td=0的记录,但是光第一条SQL只能实现父值为0或者父值和子值同时为0的效果,我想如果子值为1了父值为0的情况也不用显示出来的效果,求大神指点 解决方案 select * from (select tdh from cmhctd where td=0) a,cmhctd where INSTR(cmhctd.tdh,a.tdh)>0 解决方案二: select a.tdh,a.cm,a.hc,a.th from c

用asp.net做一个HR的管理系统,目前就卡在考情上面。请教一个SQL语句(在线等。马上结分)

问题描述 图2中的数据为打卡数据,有重复打卡的,和没打卡的.想插入到图1中.图一中只要一天4个打卡的时间,(注意是每天都会往表一中插入表二中新采集的数据哦)多余的不要.请教SQL语句.如果没打卡就为null或者是''谢谢各位大神!!!!!!! 解决方案 解决方案二:要么用存储过程,要么用程序代码实现,一句话的SQL基本无法实现.解决方案三:应该是这样的,表2中的数据应当先根据日期时间进行处理.按照你说的,一天有4个时间段:8:00-9:0012:00-13:0013:45-14:0017:50-

请教一个sql语句的问题!搜索同类项的问题!

问题描述 我通过一条sql语句搜索出了这样一组数据:223322392239224622672269226922972307请问如何将中间的重复的数据(用红色标注了)提取出来! 解决方案 解决方案二:select*from表名where字段名in(select字段名from表名groupby字段名havingcount(字段名)>1)取相同记录解决方案三:支持樓上的高手...

数据-急!请教这个sql语句怎么写:两个条件查询,其中一个满足,另一个条件就不要加了

问题描述 急!请教这个sql语句怎么写:两个条件查询,其中一个满足,另一个条件就不要加了 条件2始终存在,条件1不一定始终有.条件1.条件2的数据可能同时存在,但是 当有条件1的数据存在的时候,显示条件1的数据: 如果没有,则显示条件2的数据的数据. 解决方案 select * from table where (条件1 and not exist (select * from table where 条件2)) or (条件2 and not exist (select * from tabl

一请教一个sql查询语句

问题描述 一请教一个sql查询语句 在table1表里查询a字段大于3的记录,然后这些结果记录降序的排列后的前5条记录. 解决方案 select top 5 * from table1 where a > 3 order by 排序字段 desc 解决方案二: 不好意思,请问mysql的该怎么写呢? 解决方案三: select * from table1 where a>3 order by 排序 desc limit 5 解决方案四: 一个值得纪念的SQL查询语句

记录-请教个SQL语句问题。请大神指点

问题描述 请教个SQL语句问题.请大神指点 有个字段叫 作者姓名,该字段内内容为 "作者1,作者2,作者3",现在想把这个字段里面作者一样,但顺序不一样的记录查找出来,该怎么写? 比如就是 "张三,李四,赵五" ,但有的记录里面为"赵五,张三,李四",也不一定是这种顺序,就是名字完全一致,但排列的先后顺序不一样的字段. 更多 0 解决方案 写个存储过程,游标遍历,取出这个字段值,按逗号分隔,判断是否 一样 解决方案二: 非得在数据库中查么?按照每