【问题标题】:Need correction of SQL query需要更正 SQL 查询
【发布时间】: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

【问题讨论】:

    标签: sql database oracle10g


    【解决方案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 是学期开始日期)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2011-01-15
    • 2014-06-22
    相关资源
    最近更新 更多