我的设置是我有两个表Study和Activity_History。活动在研究中进行,因此存在一对多的关系。在SQL子查询中使用多列
我希望能够在Activity_History表上运行一个SQL查询,这将使我获得活动和以前运行的活动。我目前有这样的:
SELECT
*
FROM Activity_History AS A1
LEFT JOIN Activity_History AS A2
ON A2.Parent_Study_ID =
(
SELECT TOP 1 Parent_Study_ID
FROM Activity_History AS A3
WHERE A3.Parent_Study_ID = A1.Parent_Study_ID
AND A3.Activity_Date < A1.Activity_Date
ORDER BY Activity_Date DESC
)
这是行不通的。发生什么事是它拉动查询的Activity_Date方没有任何作用,它只是按照每行的降序日期顺序返回第一个匹配的Activity_Date。我认为这是因为在我的子查询中我在使用Activity_Date的地方,但这不在子查询select中。
感谢您的帮助!
你可以请加表模式,列名 – dekdev 2013-02-20 18:17:25
什么是“*这是行不通的*”是什么意思? – RBarryYoung 2013-02-20 18:20:41
你不应该需要在你的'SELECT'中的WHERE中包含所有的列......你得到的错误是什么? – 2013-02-20 18:21:06