0

为了让您对手头的问题有所了解,我为学生信息系统创建了一个报告,该系统根据一组下拉列表中的可选标准,在 html 页面上提取学生日志。下拉列表使用 tlist/sql 填充。当前报告只有 3 个下拉菜单:

开始日期、结束日期和运动日志。以下是 Sports 下拉菜单的代码:

SELECT DISTINCT log.logtypeid,
CASE WHEN log.subtype is null THEN ' ' ELSE log.subtype END subID, 
lt.Name logtype, 
CASE WHEN to_char(st.ValueT) is null THEN ' - NONE' ELSE ' - ' || to_char(st.ValueT) END subtype
FROM log
INNER JOIN gen lt ON log.logtypeid = lt.id
LEFT OUTER JOIN gen st ON st.Name = to_char(lt.ID)
AND st.value = log.subtype
AND st.Cat = 'subtype'
WHERE lt.Cat = 'logtype'
AND log.logtypeid = '3935'
ORDER BY subtype

现在,为了让报告按设计拉出,我相信我需要从“运动”下拉列表中的每个选择中提取一些不会在下拉列表中列出或显示的数据。在它目前的状态下,它应该保持的方式是......

Sports - Baseball
Sports - Bowling
Sports - Boys Basketball
Sports - Boys Golf
Sports - Dance
Sports - Diving

Sports 表示 logtypeid 3935。棒球是子类型 101,保龄球是子类型 102,等等。

为了让报告按设计拉取数据,还有两个额外的子类型需要拉取,但不幸的是它们持有不同的 logtypeid,626。所以如果学生 id 1 有 3935(logtypeid),101(subtype),它应该如果他/她有,也拉他的 626(logtypeid) 29(subtype) 和 626(logtypeid) 43(subtype)。

Data Example:

STUDENTID       LOGTYPEID       SUBTYPE
  6382             626             27
  6382             626             41
  6382             626             38
  6382             626             43
  6382             626             29
  6382            3935            109
  6382            3935            117
  6383             626             43
  6383             626             30
  6383             626             43
  6383             626             25
  6383             626             43
  6383             626             14
  6383            3935            117
  6400             626             38
  6401             626             28
  6401             626             36
  6401            3935            110
  6402              15              3
  6405            3935            101
  6405            3935            115
  6405             626             29
  6405             626             43

所以为了简化(我希望),所有 3935 都应该显示在 Sports 下拉列表中,并带有相应的子类型。任何持有所选标准的学生 ID(一次只能选择一项运动),报告还应该拉到那里 logtypeid 626、子类型 29 和 logtypeid 626 子类型 43。我已经尝试了我能想到的一切。我相信答案可能介于 CASE WHEN 之间,但我不确定语法。任何帮助或建议将不胜感激。先感谢您。

4

0 回答 0