【发布时间】:2012-05-05 01:28:21
【问题描述】:
我有一个嵌套的 SQL 选择语句,其中子选择依赖于父选择的值。但是,由于空值(我认为),查询失败。 如何让查询在每次遇到空值时忽略子选择语句?
这是我的查询:
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts
WHERE (Hierarchy = ParentHierarchy)) AS ParentHierarchy
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
这是我的错误信息:
列名“ParentHierarchy”无效
******************** 编辑:24/04/2012 - 14:50 *****************
感谢您指出错误。不幸的是,我仍然遇到同样的问题。
这是更新后的查询:
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID
FROM SpecProducts
WHERE (Hierarchy = ParentHierarchy)) AS ParentID
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
错误信息: 列名“父层次结构”无效
问题是因为 ParentHierarchy 值可以为 NULL 吗?
** 编辑 ************
好的,这可行:
SELECT ID, Hierarchy, Name, Hierarchy.GetLevel() AS Level, Hierarchy.GetAncestor(1) AS ParentHierarchy,
(SELECT ID AS IDd
FROM SpecProducts
WHERE (Hierarchy = SpecProducts_1.Hierarchy.GetAncestor(1))) AS ParentID
FROM SpecProducts AS SpecProducts_1
WHERE (EnableDisable IS NULL)
ORDER BY Hierarchy
【问题讨论】:
-
是错字还是您命名了两列 ParentHierarchy?
标签: sql sql-server-2008 select