-1
我正在尝试连接4个带有内部联接的表,其中一个带有别名'm'将为已定义的条件(这是一种有效的可能性)返回空的结果集。我想为我的IF语句设置的空结果的规定:如何检查内部联接的结果是否为空
IF(((((SUM(m.TTL_ONLINE_COUNT)+SUM(m.TTL_OFFLINE_COUNT))*100))> TAV.`ThresholdValue`) OR ISNULL(m.TTL_ONLINE_COUNT)
目前,我试图检查的一列返回的数据集为空,但根据需要它不是工作。我怎样才能做出这样的规定?
SELECT AQ.Adate, TE.EmployeeID, TE.`WorkerLevelID`,TAV.ManufacturingProductID,TAV.SubOfficeID,Te.SubstationCode,TAV.`AllowID`,TAV.`WorkerLevelID`,TAV.ThresholdValue,TAV.RewardValue,
CASE AQ.Status
WHEN '0' OR '6' THEN
IF(((((SUM(m.TTL_ONLINE_COUNT)+SUM(m.TTL_OFFLINE_COUNT))*100))> TAV.`ThresholdValue`) OR ISNULL(m.TTL_ONLINE_COUNT),
CASE TAV.RateType
WHEN 'Monthly' THEN
TAV.RewardValue/DAY(LAST_DAY(P_DateFrom))
WHEN 'Yearly' THEN
TAV.RewardValue/365.25
END, 0)
END AS FPYAllowance
FROM TempEmployee TE
INNER JOIN TempAllowValid TAV ON TE.ManufacturingProductID = TAV.ManufacturingProductID AND TE.SubOfficeID =TAV.SubOfficeID AND TE.WorkerLevelID = TAV.WorkerLevelID
INNER JOIN Attendance_QlikView AQ ON P_DateFrom = AQ.ADate
INNER JOIN `mwooriginbasedfault` m ON m.Defect_Origin_Code = TE.SubstationCode AND m.Defect_Date = AQ.ADate
WHERE (TAV.AllowID = 3 OR Tav.AllowID=10)
GROUP BY AQ.Adate, TE.EmployeeID);
如果m返回空结果集,则整个查询将返回一个空结果集。如果您仍想获得结果,请使用左连接。 –
你说它不能按预期工作,但你不告诉你的期望。 –
我想,如果内部连接与m返回一个空的结果集我的if语句处理它,并选择一个'0',而不是完全忽略它。如果我没有在我的问题中说清楚,我很抱歉。 – Salik