【发布时间】:2019-06-03 20:05:26
【问题描述】:
我在 SSRS 中的报告接受多个学生 ID。即使查询没有返回任何数据,用户也希望报告返回学生 ID(在它自己的行中)。身份证无效。因此,如果用户输入 10 个学生 ID,其中 5 个无效,则返回 5 个“好”IDS 的数据,并返回 5 行,其中第一列是无效 ID,第二列将是“无效 ID” "消息。
我尝试使用 multiselect 参数和已编译的 JOINed 参数进行 UNION,但我不知道如何在自己的行中获取每个无效 ID。
SELECT ODSMGR.STUDENT_COURSE.ID,
ODSMGR.STUDENT_COURSE.Name,
ODSMGR.ACADEMIC_STUDY.STUDENT_LEVEL,
SUM(ODSMGR.STUDENT_COURSE.COURSE_CREDITS) CREDITS,
NVL(SUM(AMOUNT),0) Fees,
ODSMGR.PERSON_DETAIL.EMAIL_PREFERRED_ADDRESS,
EMPLOYEE_POSITION_OSU.SUPERVISOR_NAME,
EMPLOYEE_POSITION_OSU.SUPERVISOR_ID,
MST_PERSON.EMAIL_PREFERRED_ADDRESS SupervisorEmail
FROM ODSMGR.STUDENT_COURSE
INNER JOIN ODSMGR.ACADEMIC_STUDY
ON ODSMGR.STUDENT_COURSE.PERSON_UID = ODSMGR.ACADEMIC_STUDY.PERSON_UID
AND ODSMGR.STUDENT_COURSE.ACADEMIC_PERIOD = ODSMGR.ACADEMIC_STUDY.ACADEMIC_PERIOD
INNER JOIN ODSMGR.PERSON_DETAIL
ON ODSMGR.STUDENT_COURSE.PERSON_UID = ODSMGR.PERSON_DETAIL.PERSON_UID
LEFT OUTER JOIN AR_DETAIL_OSU
ON AR_DETAIL_OSU.PIDM = ODSMGR.STUDENT_COURSE.PERSON_UID
AND TERM_CODE = ODSMGR.STUDENT_COURSE.ACADEMIC_PERIOD
AND detail_code = 'INC1'
LEFT OUTER JOIN EMPLOYEE_POSITION_OSU
ON EMPLOYEE_POSITION_OSU.PERSON_UID = ODSMGR.STUDENT_COURSE.PERSON_UID
AND EMPLOYEE_POSITION_OSU.POSITION_STATUS = 'A'
LEFT OUTER JOIN MST_PERSON
ON MST_PERSON.PERSON_UID = EMPLOYEE_POSITION_OSU.SUPERVISOR_ID
WHERE ODSMGR.STUDENT_COURSE.PERSON_UID = :PIDMParameter
and ODSMGR.STUDENT_COURSE.ACADEMIC_PERIOD = :AcademicPeriodCodeParameter
and COURSE_REGISTER_IND = 'Y'
and WITHDRAWN_IND = 'N'
and NVL(ODSMGR.PERSON_DETAIL.CONFIDENTIALITY_IND,'N') = 'N'
GROUP BY ODSMGR.STUDENT_COURSE.ID,
ODSMGR.STUDENT_COURSE.Name,
ODSMGR.ACADEMIC_STUDY.STUDENT_LEVEL,
ODSMGR.PERSON_DETAIL.EMAIL_PREFERRED_ADDRESS,
EMPLOYEE_POSITION_OSU.SUPERVISOR_NAME,
EMPLOYEE_POSITION_OSU.SUPERVISOR_ID,
MST_PERSON.EMAIL_PREFERRED_ADDRESS
以上代码只是基本代码。如果没有数据,我不知道如何让它返回参数。 :PIDMParameter 可以是任意数量的 ID。
【问题讨论】:
-
我将它添加到 SSRS 的代码块中,但出现错误:查询块的结果列数不正确。工会双方有9个领域? UNION select :IDParameter, '', '', '', '', '', '', '', '' FROM DUAL
-
您是否考虑过在 oracle 中根据参数构建一个表,然后将该表用作您的数据的基表,以便即使它无效也始终返回?可能类似于 Oracle 中的 SQL SERVER CTE 等价物?
标签: oracle reporting-services parameters