select ksh,cjxdm,cj from( select ksh,cjxdm,to_char(zcj,'fm000')||to_char(ywasx,'fm000')||to_char(mywsx,'fm000')||to_char(wy,'fm000')||to_char(sxkm,'fm000')||to_char(cxkm1,'fm000')||to_char(cxkm2,'fm000') cj from( select bmk.ksh,'XX' cjxdm,nvl(a.cj,0) zcj,nvl(b.cj,0)+nvl(c.cj,0) ywasx,greatest(nvl(b.cj,0),nvl(c.cj,0)) mywsx,d.cj wy,e.cj sxkm,greatest(f.cj,g.cj) cxkm1,least(f.cj,g.cj) cxkm2 from xc.xc_t_bmk bmk inner join ljh_t_cjk cjk on bmk.ksh=cjk.ksh inner join gb.t_wkcj a on cjk.ksh=a.ksh and a.cjxdm='0X' --总分 inner join gb.t_wkcj b on a.ksh=b.ksh and b.cjxdm='01' --语文 inner join gb.t_wkcj c on b.ksh=c.ksh and c.cjxdm='02' --数学 inner join gb.t_wkcj d on c.ksh=d.ksh and d.cjxdm='03' --外语 inner join gb.t_wkcj e on d.ksh=e.ksh and e.cjxdm=substr(bmk.xkkm,1,2) --首选 inner join gb.t_wkcj f on e.ksh=f.ksh and f.cjxdm=substr(bmk.xkkm,4,2) --次选1 inner join gb.t_wkcj g on f.ksh=g.ksh and g.cjxdm=substr(bmk.xkkm,7,2) --次选2 where bmk.zkzh is not null and cjk.cjxdm='0A' order by bmk.ksh ) )这段代码啥意思?
时间: 2024-03-29 21:34:28 浏览: 90
ksh-20120801-10.el6.x86_64.rpm
这段代码是一个SQL查询语句,其目的是从多个表中检索出学生成绩,并将不同科目的成绩拼接成一个字符串(称为“cj”列)。
具体来说,该查询从名为“xc.xc_t_bmk”表中检索出满足条件“bmk.zkzh is not null and cjk.cjxdm='0A'”(即非市属文化学生成绩)的学生成绩,并将其与名为“ljh_t_cjk”、“gb.t_wkcj”的五个表进行连接,以获取不同科目的成绩。连接条件为:bmk表中的“ksh”列等于cjk表中的“ksh”列;a表中的“ksh”列等于cjk表中的“ksh”列,且a表中的“cjxdm”列等于“0X”(即总分);b表中的“ksh”列等于a表中的“ksh”列,且b表中的“cjxdm”列等于“01”(即语文成绩);c表中的“ksh”列等于b表中的“ksh”列,且c表中的“cjxdm”列等于“02”(即数学成绩);d表中的“ksh”列等于c表中的“ksh”列,且d表中的“cjxdm”列等于“03”(即外语成绩);e表中的“ksh”列等于d表中的“ksh”列,且e表中的“cjxdm”列等于bmk表中的“xkkm”列的前两个字符;f表中的“ksh”列等于e表中的“ksh”列,且f表中的“cjxdm”列等于bmk表中的“xkkm”列的第4到5个字符;g表中的“ksh”列等于f表中的“ksh”列,且g表中的“cjxdm”列等于bmk表中的“xkkm”列的第7到8个字符。
最后,查询使用“to_char”函数将每个科目的成绩转换为以零填充的3位数字字符串,并将这些字符串拼接成一个字符串。该字符串作为新列(“cj”列)添加到查询结果中。
阅读全文