u|Uc©达内科技论坛--达内科技论坛^2;,sN原表:©达内科技论坛--达内科技论坛1(YJv©达内科技论坛--达内科技论坛aH@:id proid pronameEuSgO1 1 M©达内科技论坛--达内科技论坛8Jn1 2 F©达内科技论坛--达内科技论坛wM2 1 N©达内科技论坛--达内科技论坛;u2 2 G©达内科技论坛--达内科技论坛y3 1 B©达内科技论坛--达内科技论坛xC$ ow3 2 A©达内科技论坛--达内科技论坛0O查询后的表:!y(©达内科技论坛--达内科技论坛pid pro1 pro2cF01 M F©达内科技论坛--达内科技论坛:2 N G©达内科技论坛--达内科技论坛Wo3 B A©达内科技论坛--达内科技论坛ZPnMDT写出查询语句 -)|Q©达内科技论坛--达内科技论坛TCNk/又是一道面试题:D©达内科技论坛--达内科技论坛/,#0Yz原表:©达内科技论坛--达内科技论坛m'©达内科技论坛--达内科技论坛D5$F[id proid pronameTG/1 1 M©达内科技论坛--达内科技论坛R-1G1 2 F©达内科技论坛--达内科技论坛p72 1 N©达内科技论坛--达内科技论坛*whR2 2 G©达内科技论坛--达内科技论坛+S83 1 B©达内科技论坛--达内科技论坛8b.R3 2 A©达内科技论坛--达内科技论坛i[查询后的表:lK-}h©达内科技论坛--达内科技论坛AkPm%fid pro1 pro2Cv_1 M F©达内科技论坛--达内科技论坛wf2 N G©达内科技论坛--达内科技论坛#`R0^L3 B A©达内科技论坛--达内科技论坛pD写出查询语句 {fPQ#©达内科技论坛--达内科技论坛jy~o$P又是一道面试题:A7©达内科技论坛--达内科技论坛'原表:©达内科技论坛--达内科技论坛vj~O7W©达内科技论坛--达内科技论坛Gid proid pronameq1 1 M©达内科技论坛--达内科技论坛61 2 F©达内科技论坛--达内科技论坛aMVy:2 1 N©达内科技论坛--达内科技论坛l1$2 2 G©达内科技论坛--达内科技论坛n@$['3 1 B©达内科技论坛--达内科技论坛~x1%hQ3 2 A©达内科技论坛--达内科技论坛FP+查询后的表:(?P©达内科技论坛--达内科技论坛kid pro1 pro2Cq<=`1 M F©达内科技论坛--达内科技论坛M|L~!2 N G©达内科技论坛--达内科技论坛sPrrS=3 B A©达内科技论坛--达内科技论坛Gv&:Go写出查询语句 i©达内科技论坛--达内科技论坛r5o/Y又是一道面试题:o-Xcas©达内科技论坛--达内科技论坛2原表:A7D.n©达内科技论坛--达内科技论坛""3#+id proid proname]1 1 MC9$1 2 F<2 1 Nwwln/2 2 G}3 1 B>0{3 2 Ag0X?D8查询后的表:"O#D©达内科技论坛--达内科技论坛{ Hin)id pro1 pro2]4s1 M FX2 N G"w^8"3 B A^6F写出查询语句 OP©达内科技论坛--达内科技论坛+2U解决方案可有以下三种作参考:mkT©达内科技论坛--达内科技论坛>©达内科技论坛--达内科技论坛eJN1:使用pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制。 `i+L下面是一个例子 "create or replace type strings_table is table of varchar2(20);,/©达内科技论坛--达内科技论坛mcreate or replace function merge (pv in strings_table) return varchar2FuzDis©达内科技论坛--达内科技论坛RPls varchar2(4000);^begin©达内科技论坛--达内科技论坛`Sm|for i in 1..pv.count loopf">ls := ls || pv(i);~~Dcoend loop;5}+|Rreturn ls;p}cend;Q/©达内科技论坛--达内科技论坛4LtI]!create table t (id number,name varchar2(10));@3;~P"insert into t values(1,'Joan');>aiUq&insert into t values(1,'Jack');nyqinsert into t values(1,'Tom');Z>0VKinsert into t values(2,'Rose'); insert into t values(2,'Jenny');'Gyf]©达内科技论坛--达内科技论坛?column names format a80;"'F0select t0.id,merge(cast(multiset(select name from t where t.id = t0.id) as strings_table)) names%from (select distinct id from t) t0;c~©达内科技论坛--达内科技论坛[?Tdrop type strings_table;"Rlpdrop function merge;9prmXdrop table t;9Zi)~;©达内科技论坛--达内科技论坛H©达内科技论坛--达内科技论坛^#p{2:用sql: LJV©达内科技论坛--达内科技论坛#t&3_;Well if you have a thoretical maximum, which I would assume you would given the legibility of listing hundreds of employees in the way you describe then yes. But the SQL needs to use the LAG function for each employee, hence a hundred emps a hundred LAGs, so kind of bulky.bPHX+n©达内科技论坛--达内科技论坛cyThis example uses a max of 6, and would need more cut n pasting to do more than that.634b©达内科技论坛--达内科技论坛w[©达内科技论坛--达内科技论坛~y#d-SQL> select deptno, dname, empsY5jqb2 from (("iv3 select d.deptno, d.dname, rtrim(e.ename ||', '||91l34 lead(e.ename,1) over (partition by d.deptnoJg."5 order by e.ename) ||', '||,_yc6 lead(e.ename,2) over (partition by d.deptnoV$}7 order by e.ename) ||', '||'n$为了便于阅读,查询此表后的结果显式如下(及格分数为60):pk8courseid coursename score mark3---------------------------------------------------u1 java 70 pass5"2 oracle 90 pass"LC#3 xml 40 fail+{?4 jsp 30 failHb5 servlet 80 passey---------------------------------------------------vS3g写出此查询语句 Eh©达内科技论坛--达内科技论坛ZE^@©达内科技论坛--达内科技论坛BBF select courseid,coursename ,score ,decode(sign(score-61),-1,'fail','pass') as markhQ68ufrom course_v;@Kp!C©达内科技论坛--达内科技论坛]"|wCOURSEID COURSENAME SCORE MARKpu"GS.---------- ---------- ---------- ----U]1 java 70 passLB2 oracle 90 passa42|3 xml 40 failzvIh44 jsp 30 faile8#5 servlet 80 pass`[
java常见手写sql面试题_SQL常见面试问题
最新推荐文章于 2024-04-14 11:59:23 发布