【发布时间】:2016-05-18 13:16:45
【问题描述】:
我的这段代码运行良好,只是我需要再添加一个条件:
SELECT record1.*,
tbl_mpsregion.maintenanceteam,
tbl_mpsregion.regionmps
INTO tbl_sapforecast
FROM tbl_mpsregion
RIGHT JOIN
(
SELECT sap_ip19.*,
dateserial(RIGHT(trim([SAP_IP19].[PlanDate]),4),mid(trim([SAP_IP19].[PlanDate]),4,2),LEFT(trim([SAP_IP19].[PlanDate]),2)) AS [DATE/FORECAST],
tbl_labourstandard.re,
tbl_labourstandard.manning,
tbl_labourstandard.skillset AS skillset,
tbl_regionmapping.maintenanceplant,
tbl_regionmapping.area,
tbl_regionmapping.region AS region,
tbl_regionmapping.onresponse,
[RE]*[Manning]/60 AS hours
FROM (sap_ip19
LEFT JOIN tbl_labourstandard
ON (
LEFT(sap_ip19.[Task list description],3) = tbl_labourstandard.jemenawc)
AND (
sap_ip19.[MntPlan] = cdbl(tbl_labourstandard.supplypoint )))
LEFT JOIN tbl_regionmapping
ON sap_ip19.location = cdbl([Tbl_RegionMapping].[FittersDistricts])) AS record1
ON (
record1.region = [Tbl_MPSRegion].[Region])
AND (
record1.skillset = [Tbl_MPSRegion].[Skillset]) ;
要添加的标准是:如果 SAP_IP19.MntPlan 与 Tbl_LabourStandard.SupplyPoint 不匹配,则为 Tbl_LabourStandard.SupplyPoint 使用 0。我没有使用 Server 2000,因此使用 CASE 不是解决方案。已经尝试过 IIF 和 SWITCH 但他们没有将查询带入睡眠模式(不评估)。我读到不能使用带有 IIF 或 SWITCH 的 JOINS。请帮忙!
【问题讨论】:
-
你确定吗? http://www.techonthenet.com/access/functions/advanced/case.php 您使用的是非常旧的访问版本,还是无法处理 CASE 的连接器,或者您尝试的语法可能不太正确...?编辑:没关系,我看到它在 VBA 中可用,但在标准 SQL 中不可用。我想这可能会为您指明替代方案。另请查看 [stackoverflow.com/questions/247858/….
-
很抱歉 - 编辑时间用完了。查看Nz
-
感谢 GumbyG!我会看不同的例子。我试图在加入条件下使用这些函数,这可能是一种不正确的方式。
-
我知道你现在想做什么,我怀疑 Nz 不会有帮助。我会尝试移动到两个查询结果的 UNION,其中 tbl_labourstandard 在两者中都内部连接 - 一个与 sap_ip19.[MntPlan] 的链接,另一个与 Tbl_LabourStandard.SupplyPoint 的条件为零。这可行吗?
标签: sql ms-access-2010 left-join