【发布时间】:2014-07-20 15:35:53
【问题描述】:
我无法将此 Oracle SQL 转换为 SQL 服务器。
这是查询:
SELECT CM.ModuleID,
CM.ModuleDescription,
CM.ImageIndex,
CASE
WHEN CMAC.ClassID IS NULL THEN
'N'
ELSE
'Y'
END AS Checked
FROM APP_MODULES CM,
APP_PROFILE CMAP,
APP_PROFILE_CLASS CMAC
WHERE 1 = 1
AND CM.ParentModuleID IS NULL
AND CMAP.ProfileID(+) = CMAC.ProfileID
AND CM.ModuleID = CMAC.ModuleID(+)
AND CMAC.ProfileID(+) = P_ProfileID
AND CM.Activated = 'Y'
ORDER BY CM.Ordem;
谁能帮帮我?
【问题讨论】:
-
欢迎来到 SO。请阅读How to Ask。首先,(+) 是旧的、特定于 oracle 的外连接语法。你肯定需要改变它。
-
除了@OldPrrogrammer 合理的建议之外,我不明白 WHERE 1 = 1 条件的必要性。
-
@rontornambe 这种情况通常是由于装配工造成的。您可以使用
WHERE 1=1 <FILTERS>编写查询,并使用AND Condition1 AND Condition2 AND ...替换过滤器,条件数不限。这样,过滤器构建器可以非常简单(它不必生成实际的 where 子句)灵活(您可以有其他“硬编码” where 条件),并且通常不会影响性能,因为这样的条件大多被数据库忽略。
标签: sql sql-server oracle