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 20:34:28 浏览: 95
这段代码是一个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”列)添加到查询结果中。
相关问题
select ksh,cjxdm,cast ((a0||'.'||yw||sx||wy) as number(13,9)) cj,a0||'.'||yw||sx||wy as cj11 from ( select a.ksh,'0Z' cjxdm,to_char(nvl(a.cj,0),'fm990') a0,to_char(nvl(b.cj,0),'fm000') yw,to_char(nvl(c.cj,0),'fm000') sx,to_char(nvl(d.cj,0),'fm000') wy from ljh_t_cjk a left join gb.t_wkcj b on a.ksh=b.ksh and b.cjxdm='01' --b语文成绩 left join gb.t_wkcj c on b.ksh=c.ksh and c.cjxdm='02' --c数学成绩 left join gb.t_wkcj d on c.ksh=d.ksh and d.cjxdm='03' --c外语成绩 where a.cjxdm='0A' and substr(a.ksh,9,2) in ('11','13','14') --a非市属文化 )这段代码啥意思,
这段代码是一个SQL查询语句,其目的是从多个表中检索出学生成绩,并将不同科目的成绩拼接成一个13位数字类型的字符串(称为“cj”列),同时还将该字符串拆分成四个部分(称为“a0”、“yw”、“sx”和“wy”列)。
具体来说,该查询从名为“ljh_t_cjk”表中检索出满足条件“a.cjxdm='0A' and substr(a.ksh,9,2) in ('11','13','14')”(即非市属文化学生成绩)的学生成绩,并将其与名为“gb.t_wkcj”的三个表进行连接,以获取不同科目的成绩。连接条件为:b表中的“ksh”列等于a表中的“ksh”列,且b表中的“cjxdm”列等于“01”(即语文成绩);c表中的“ksh”列等于b表中的“ksh”列,且c表中的“cjxdm”列等于“02”(即数学成绩);d表中的“ksh”列等于c表中的“ksh”列,且d表中的“cjxdm”列等于“03”(即外语成绩)。
最后,查询使用“to_char”函数将每个科目的成绩转换为以零填充的3位数字字符串,并将这些字符串拼接成一个13位数字字符串。该字符串作为新列(“cj”列)添加到查询结果中,同时还将该字符串拆分成四个部分(“a0”、“yw”、“sx”和“wy”列),并将这些部分作为新列添加到结果中(“cj11”列)。
select a.ksh,'0A' cjxdm,a.cj+a.fjf_fss as cj, to_char(a.cj+a.fjf_fss) as cj11 from ( select bmk.ksh,zcjf.fjf_ss,zcjf.fjf_fss,wkcj.cjxdm,wkcj.cj from xc.xc_t_bmk bmk left join ljh.ljh_t_bmk zcjf on bmk.ksh=zcjf.ksh left join gb.t_wkcj wkcj on bmk.ksh=wkcj.ksh where bmk.zkzh is not null and wkcj.cjxdm='0X' and zcjf.leibie='文理' --and wkcj.cj is not null order by bmk.ksh,wkcj.cjxdm啥意思
这看起来也是一个 SQL 查询语句,用于查询学生的考试成绩。其中,"xc.xc_t_bmk"、"ljh.ljh_t_bmk" 和 "gb.t_wkcj" 是三个不同的表,它们分别存储了学生的基本信息、分数等数据。查询语句中使用了左连接(left join)和 where 子句来关联这些表,找到符合条件的数据。
具体来说,查询的条件是:学生的准考证号不为空,考试成绩项代码为 '0X',类型为 '文理'。查询结果包含四列数据:"ksh"、"cjxdm"、"cj" 和 "cj11",分别表示学生考试的考生号、成绩项代码、成绩和格式化后的成绩。其中,"cj" 的计算方式是将 "wkcj.cj" 和 "zcjf.fjf_fss" 相加得到的,"cj11" 是将 "cj" 转化为字符串类型后得到的。最后,查询结果按照学生的考生号和成绩项代码进行排序。
阅读全文