我有MS Access查询(在SQL视图中)无法识别最后一位- AND(((dbo_EMTER.TER_DATE)为空或(dbo_EMTER.TER_DATE)>“ 12/31/2018”));
该列主要用于查看系统中没有结束日期或在2018年12月31日之后具有终止日期的员工,但是我的查询正在拾取没有结束日期的记录以及2018年12月31日之前的记录
下面是我的完整查询(正在寻找一年中请病假的员工),有人可以让我知道发生了什么事吗?
SELECT dbo_EMDET.DET_NUMBER, dbo_EMDET.DET_G1_NAME1,
dbo_EMDET.DET_SURNAME,
dbo_EMDET.DET_DATE_JND, dbo_EMPOS.POS_PDT_HRS, dbo_EMPOS.POS_AV_HR_WK,
dbo_EMPOS.POS_DAYS_WK, [POS_AV_HR_WK]/[POS_DAYS_WK] AS [average hours in
day], [LVE_HOUR_TKN]/[average hours in day] AS [average day taken],
dbo_EMLVE.LVE_HOUR_TKN, dbo_EMLVE.LVE_DAY_TAKE, dbo_EMLVE.LVE_START,
dbo_EMLVE.LVE_END, dbo_EMLVE.LVE_TYPE_CD, dbo_EMPAY.DET_NUMBER,
dbo_EMPAY.PYD_COMPANY, dbo_EMPOS.POS_START, dbo_EMPOS.POS_END,
dbo_EMPOS.POS_L0_CD, dbo_EMPOS.POS_L1_CD, dbo_EMPOS.POS_L2_CD,
dbo_EMPOS.POS_L3_CD, dbo_EMPOS.POS_L4_CD, dbo_EMPOS.POS_L5_CD,
dbo_EMPOS.POS_L6_CD, dbo_EMPOS.POS_ALT_CD1, dbo_EMPOS.POS_ALT_CD2,
dbo_EMPOS.POS_STATUS, [Translation Table].[Code Description],
dbo_EMPOS.POS_PDT_STAT, dbo_EMTER.TER_DATE,
IIf(Left([POS_L5_CD],1)="G","Core","Other") AS [Staff Grouping]
FROM ((((dbo_EMDET LEFT JOIN dbo_EMLVE ON dbo_EMDET.DET_NUMBER =
dbo_EMLVE.DET_NUMBER) LEFT JOIN dbo_EMPAY ON dbo_EMDET.DET_NUMBER =
dbo_EMPAY.DET_NUMBER) INNER JOIN [max position 2] ON dbo_EMDET.DET_NUMBER =
[max position 2].DET_NUMBER) INNER JOIN (dbo_EMPOS LEFT JOIN [Translation
Table] ON dbo_EMPOS.POS_STATUS = [Translation Table].Name) ON ([max position
2].DET_NUMBER = dbo_EMPOS.DET_NUMBER) AND ([max position 2].MaxOfPOS_START =
dbo_EMPOS.POS_START)) LEFT JOIN dbo_EMTER ON dbo_EMDET.DET_NUMBER =
dbo_EMTER.DET_NUMBER
WHERE (((dbo_EMLVE.LVE_START)>"01/01/2018" And (dbo_EMLVE.LVE_START)
<"12/31/2018") AND ((dbo_EMLVE.LVE_TYPE_CD)="SIC" Or
(dbo_EMLVE.LVE_TYPE_CD)="DOM" Or (dbo_EMLVE.LVE_TYPE_CD)="ACC" Or
(dbo_EMLVE.LVE_TYPE_CD)="WCME" Or (dbo_EMLVE.LVE_TYPE_CD)="WCMN" Or
(dbo_EMLVE.LVE_TYPE_CD)="WCM2" Or (dbo_EMLVE.LVE_TYPE_CD)="WCM" Or
(dbo_EMLVE.LVE_TYPE_CD)="SLWP" Or (dbo_EMLVE.LVE_TYPE_CD)="SPEC" Or
(dbo_EMLVE.LVE_TYPE_CD)="SWOP") AND ((dbo_EMPAY.PYD_COMPANY)="PS" Or
(dbo_EMPAY.PYD_COMPANY)="PSC") AND ((dbo_EMPOS.POS_L3_CD)<>"CGS") AND
((dbo_EMPOS.POS_STATUS)<>"C") AND ((dbo_EMTER.TER_DATE) Is Null Or
(dbo_EMTER.TER_DATE)>"12/31/2018"));
如果您需要进一步了解其他信息,请提供帮助。
感谢团队:)
答案 0 :(得分:0)
可能您的“日期”不是日期值,而是文本,因此无法按预期进行过滤。
如果使用 DateTime2 和旧的 SQL Server ODBC驱动程序,则会发生这种情况。因此,请使用数据类型 DateTime 或使用 SQL Server Native Client 11.0 或更高版本。