有一个与 MS SQL Server 相关的查询。
我将不得不对细节含糊不清,并更改或删除某些部分,因为我不能说信息是否保密,但我写了一个查询,搜索跨越学期的培训单元的学生报告生成器 2.0:
DS_spanning:(主数据集)
SET DATEFORMAT dmy
SELECT
FIRST_NAME AS FirstName
,LAST_NAME AS LastName
,START_DATE AS StartDate
,END_DATE AS EndDate
,UNIT_TYPE AS UnitType
,TP_FULLNAME AS TrainingPost
,SEMESTER_YEAR AS SemesterYear
FROM AA_GPR_TU
WHERE TU_START_DATE < @checkdate //Checkdate returns the end date of the
AND TU_END_DATE > @checkdate // selected semester
ORDER BY TU_START_DATE
PM_checkdate:(@checkdate 链接到的数据集)
SET DATEFORMAT dmy
SELECT
new_semesterenddate
,new_semesterstartdate
,new_semesternumber
,new_semesteryear
,new_name
FROM
FilteredNew_rtpsemester
WHERE new_semesteryear >= 2004
ORDER BY new_semesterenddate DESC
现在,这很好,可以完成我想要的工作,但是我一次只能选择一个学期。当我尝试在@checkdate 的报告参数属性下勾选“允许多个值”框时,运行选择了多个学期的报告会给我这个错误:
',' 附近的语法不正确。
数据集“DS_spanning”的查询执行失败。
报告处理过程中发生错误。
本地报告处理过程中发生错误。**
(“,”的问题是因为当我为报告选择多个值时,它会将它们作为 data1、data2、data3 等提供给@checkdate。)
我的参数写入方式是否有问题,或者我是否需要更改查询以容纳多个值?
我能想到的最简单的方法是在该部分中使用 IN 语句
WHERE TU_START_DATE < @checkdate AND TU_END_DATE > @checkdate
但我不确定如何将 IN 语句与and
操作数结合使用。
有什么想法吗?