我正面临着SQL查询的挑战。基本上,我希望检索开始时间晚于各自传出任务的寄存器。
表格如下所示:
Main Project Main Link Name Start Outgoing tasks
A 1 A1 02.01.2012 A2
A 1 A2 01.01.2012 A3..。
我写的查询是这样的:
SELECT [Name], [Start], [Outgoing tasks]
FROM [Sheet1$]
WHERE [Main project] = 'A'
AND [Main link] = '1'
AND [Outgoing tasks] IS NOT NULL
AND [Start] > (SELECT [Start]
FROM [Sheet1$]
WHERE [Main project] = 'A'
AND [Main link] = '1'
AND [Name] = [Outgoing tasks])它不会返回任何错误,但是它根本不会带来预期的结果。
你们知道可能出了什么问题吗?任何支持都非常感谢!
更多信息:
此表来自一个类似MS Project的应用程序。所以我们有一个里程碑,它的数据,后继者和前任者。我实际上需要的是一个里程碑列表,它的开始日期晚于它的后继者(从项目管理的角度来看,这是一个错误)。因此,如果A1.Start > A2.Start,那么我应该出现在结果中。如果你需要更多的细节,请告诉我。
发布于 2012-10-04 17:02:25
试一试
select t1.* from [$Sheet1] t1
inner join [$Sheet1] t2
on t1.[main project] = t2.[main project]
and t1.[main link] = t2.[main link]
and t1.[outgoing tasks] = t2.name
and t1.start>t2.start发布于 2012-10-04 16:55:14
如果这是一个相关子查询,那么您需要一种在内部查询中引用外部语句表的方法。在MySQL中,你可以这样做:
SELECT name, start, outgoing_tasks FROM sheet1 foo WHERE main_project = 'A' AND main_link = '1' AND outgoing_tasks IS NOT NULL AND start > (SELECT start FROM sheet1 bar WHERE main_project = 'A' AND main_link = '1' AND bar.name = foo.outgoing_tasks);请注意,我为外部查询的表提供了别名foo,为内部查询的表提供了别名bar。然后,我可以引用嵌套(内部)查询的WHERE谓词中的外部表:... AND bar.name = foo.outgoing_tasks ...
https://stackoverflow.com/questions/12723400
复制相似问题