需要更正 SQL 查询
Posted
技术标签:
【中文标题】需要更正 SQL 查询【英文标题】:Need correction of SQL query 【发布时间】:2021-07-22 13:21:05 【问题描述】:我想找到只记念的semcode
我的查询是
SELECT stdcode, Degree_Code, TODATE, Gradediv, Degree_Name, semcode, mindate
FROM CHKLIST
WHERE stdcode LIKE '%02-11036%'
GROUP BY STDCODE, Degree_Code, TODATE, Gradediv, Degree_Name, semcode, mindate;
像输出这样的预期结果应该像附上这张图片:
此处附上示例数据
https://docs.google.com/spreadsheets/d/1NrU1NzVucmMLuwLXIf_nwvUbi6vjvEDkZDovsu5panA/edit?usp=sharing
【问题讨论】:
【参考方案1】:如果你有一些至少每个学期的开始日期的表格会更容易,但如果你没有'这就是我所拥有的
select t1.*, cl.semcode
from (SELECT STDCODE, Degree_Code, TODATE, Gradediv, Degree_Name, min(mindate) mindate
FROM CHKLIST
GROUP BY STDCODE, Degree_Code, TODATE, Gradediv, Degree_Name) t1
join CHKLIST cl
on cl.stdcode = t1.stdcode
and cl.degree_code = t1.degree_code
and t1.gradediv = cl.gradediv
and t1.degree_name = cl.degree_name
and t1.mindate = cl.mindate
最复杂的方面是您的 semcode col 带有难以比较的文本值。
数据库无法判断字符串“BAD-SUMMER-02”是否大于“BAD-FALL-01”。所以我将 semcode 列执行到连接表中,然后再次将来自子查询的聚合值与同一个表连接。
【讨论】:
是的,它是视图,但是 sem_code 和 mindate 来自其他表(MINdate 是学期开始日期)以上是关于需要更正 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章