我对SQL很陌生并且无法堆叠选择参数。 选择table2.eventtype在'AssignedTo'之后(而不是直接之后)发生'AcqOpened'的每个StudyNumber。
SELECT *
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.Table1_ID
WHERE Table2.eventtype ='AcqOpened' IN
(
SELECT Table1.ID
FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.Table1_ID
WHERE Table2.eventtype > 'AssignedTo' ORDER BY Table1.ID, Table2.timestamp
);
我一直在将这些变化放入Access并获得部分结果和大量错误。 (我从here获得了“>”)的想法:
以下是两个Table1条目及其对应的Table2条目的示例集。对于此设置,所需的输出将是4387(或00600138-A5BS13245-AT.xml。),因为4387在AssignedTo之后有一个AcqOpened。 (4386不)。
Table1
ID StudyNumber
--- ------------
4386 00600137-A5BS13245-AT.xml
4387 00600138-A5BS13245-AT.xml
Table2
ID Lookup_Studynumber(T1_ID) eventtype p1 p2 user timestamp
-- ------------------------- ------------- -- -- ----- --------------------
27524 00600137-A5BS13245-AT.xml AcqOpened user 7/11/2014 8:28:35 AM
27525 00600137-A5BS13245-AT.xml AcqModified user 7/11/2014 8:30:40 AM
27526 00600137-A5BS13245-AT.xml *AssignedTo* - user 7/11/2014 9:22:31 AM
27527 00600137-A5BS13245-AT.xml AcqStateChange - - user 7/11/2014 9:22:31 AM
27528 00600138-A5BS13245-AT.xml AcqOpened user 7/14/2014 8:13:10 AM
27529 00600138-A5BS13245-AT.xml AcqModified user 7/14/2014 8:16:34 AM
27530 00600138-A5BS13245-AT.xml *AssignedTo* - user 7/14/2014 10:26:40 AM
27531 00600138-A5BS13245-AT.xml AcqStateChange - - user 7/14/2014 10:26:40 AM
27532 00600138-A5BS13245-AT.xml **AcqOpened** user 7/18/2014 2:41:19 PM
27533 00600138-A5BS13245-AT.xml AcqModified user 7/18/2014 2:41:21 PM
27534 00600138-A5BS13245-AT.xml AcqStateChange - - user 7/18/2014 3:01:22 PM
27535 00600138-A5BS13245-AT.xml AcqStateChange - - user 12/19/2014 12:06:44 PM
如果对数据集进行了任何操作,那么每个StudyNumber记录的审计时间会有所帮助。 eventtype是采取了什么行动。我们的想法是找到哪些Table1 Id(或StudyNumbers)正在进行第二次审核 当我将它们导入Access时,建议我将其分成两个表。 非常感谢你看看!!
答案 0 :(得分:0)
应用自联接查询以根据所需逻辑从table2中提取信息,然后将表1与先前子查询的结果连接。
select n.ID, n.StudyNumber
from table1 n
inner join
( select a.ID, a.[Lookup_Studynumber(T1_ID)]
from Table2 a
inner join Table2 b
on a.[Lookup_Studynumber(T1_ID)]=b.[Lookup_Studynumber(T1_ID)]
and a.timestamp > b.timestamp --or apply appropriate logic
where a.eventtype = 'AcqOpened'
and b.eventtype = 'AssignedTo' ) s
on n.Studynumber=s.[Lookup_Studynumber(T1_ID)]
group by n.ID,n.StudyNumber