为了让您对手头的问题有所了解,我为学生信息系统创建了一个报告,该系统根据一组下拉列表中的可选标准,在 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 之间,但我不确定语法。任何帮助或建议将不胜感激。先感谢您。