SQL查询当前范围之前的最后一个实例

时间:2019-02-14 14:18:09

标签: sql-server

我有一个查询,该查询根据av_summary列提取上周的所有研究。我需要添加一列,以便无论最近进行的研究是在多久之前进行的,都将这项研究拉到最新的研究之前。我只需要最后一次学习的日期。 f.creation_datetime是当前研究和先前研究都来自的列。

select distinct
 f.patient_name
,t.patient_mrn
,p.accession_number
,p.performed_start_time
,p.procedure_id
,SUBSTRING(CAST(s.av_summary as NVARCHAR(MAX)), CHARINDEX('This suggests 
 the stenosis', CAST(s.av_summary as NVARCHAR(MAX))) , 
 LEN(CAST(s.av_summary as NVARCHAR(MAX)))) as AV_Summary
,(select TOP 1 (p1.performed_start_time)
  from dbo.T_TCS_PROCEDURE as p1
  where 
  p1.patient_id = p.patient_id
  and
  p1.performed_start_time < p.performed_start_time 
  and p1.procedure_type_id = p.procedure_type_id
  order by p1.performed_start_time DESC
 ) as Last_Echo

from dbo.folders as f
 join dbo.T_TCS_PROCEDURE as p
  on p.procedure_id = f.procedure_id
 join dbo.T_ECHO_SUMMARY as s
  on s.procedure_id = f.procedure_id
 join dbo.T_CON_DISPATCHER_EVENT_TRACK as t
  on t.procedure_id = f.procedure_id

其中     CAST(f.creation_datetime AS DATE)> DATEADD(DAY,-14,CAST(GETDATE()     截止日期))    和     CAST(s.av_summary为NVARCHAR(MAX)),例如'%这表明狭窄为%'    和     LEN(LTRIM(RTRIM(t。Patient_mrn)))> 0

2 个答案:

答案 0 :(得分:0)

  

我需要添加一列以使研究最先进行   最近的研究,无论以前的研究是在多久以前进行的。

将列添加为子查询,该子查询在当前行的研究日期之前获得TOP 1日期。

答案 1 :(得分:0)

我终于能够弄清楚如何获得上一次研究所需的数据。我不得不在几个不同的列上关联子查询,并且使用了完全不同的表。我正在使用的数据库完全混乱,但是我设法弄清楚了。创建数据库的公司甚至无法弄清楚。谢谢大家的帮助。非常感谢。

    ,(select TOP 1 (p1.performed_start_time)
      from dbo.T_TCS_PROCEDURE as p1
      where 
      p1.patient_id = p.patient_id
      and
      p1.performed_start_time < p.performed_start_time 
      and 
      p1.procedure_type_id = p.procedure_type_id
      order by p1.performed_start_time DESC
     ) as Last_Echo