为了让您对手头的问题有所了解,我为学生信息系统创建了一个报告,该系统根据html页面上的一组下拉菜单中的可选标准来提取学生日志。下拉列表使用tlist / sql填充。目前的报告只有3次下降:
开始日期,结束日期和体育日志。以下是体育下拉列表的代码:
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
体育代表logtypeid 3935.棒球是子类型101,保龄球是子类型102等。
对于按设计提取数据的报告,需要提取两个额外的子类型,但遗憾的是它们拥有不同的logtypeid,626。因此,如果学生ID 1具有3935(logtypeid),则为101(子类型) ,如果他/她拥有它们,它还应该拉出他的626(logtypeid)29(子类型)和626(logtypeid)43(子类型)。
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下拉列表中,并显示相应的子类型。任何持有所选标准的学生(一次只能选择一项运动),报告还应该拉到logtypeid 626,子类型29,和logtypeid 626子类型43.我已经尝试了我能想到的一切。我相信答案可能会落在CASE WHEN之间,但我不确定语法。任何帮助或建议将不胜感激。提前谢谢。