我在两个表之间有一个交叉连接,我需要 PayrollOID 来满足一组条件。我曾尝试在 WHERE 子句中的 CASE 语句、CASE 和 IIF 语句中执行此操作,现在在常规代码中,我意识到我将不得不再做一遍以摆脱空洞。
我有根据批准日期进入工资单的工作批准。我们将其更改为输入批准的日期。
如果 Apr_Entered >= JobPayStart and Apr_Entered <= TimesheetsDue and JobEndDate >= JobPayStart and JobEndDate <=JobPayEnd - 给我那个 OID。不要寻找其他任何东西。
否则 - 我希望在 Apr_Entered >= JobPayStart 和 Apr_Entered <= JobPayEnd 的情况下支付工作报酬。
我收到一个错误:函数参数列表中的错误:“>”无法识别。无法解析查询文本。
但它确实运行。然而,我得到重复,其中两个括号都显示为重叠作业。
我需要帮助收紧我的书挡——所以当第一个被发现的时候就出去。我还需要知道为什么在将日期时间字段转换为日期以进行比较时仍然出现错误。
IIF(CONVERT(varchar(10), ProtoPayroll.AprEntered,110) >= CONVERT(varchar(10), PayDates.PayStartDate,110)
AND CONVERT(varchar(10), ProtoPayroll.AprEntered,110) <= CONVERT(varchar(10), PayDates.TimesheetsDue,110)
AND CONVERT(varchar(10), ProtoPayroll.JobEndDate,110) >= CONVERT(varchar(10), PayDates.PayStartDate,110)
AND CONVERT(varchar(10), ProtoPayroll.JobEndDate,110) <= CONVERT(varchar(10), PayDates.PayEndDate,110),
--First IIF's result
CONVERT(nvarchar(40), dbo.Paydates.OID),
--Now another IIF
IIF (CONVERT(varchar(10), ProtoPayroll.AprEntered,110) >= CONVERT(varchar(10), PayDates.PayStartDate,110)
AND CONVERT(varchar(10), ProtoPayroll.AprEntered,110) <= CONVERT(varchar(10), PayDates.PayEndDate,110),
--Second IIF's results
CONVERT(nvarchar(40), dbo.Paydates.OID), SPACE(40))) AS PayrollOID