我目前正在使用此查询
SELECT DISTINCT
se.src_aet AS "Ripped By",
CONVERT(varchar(32), s.created_time, 113) AS "Date/Time Sent",
p.pat_name AS "Patient Name",
p.pat_id AS "Patient ID",
s.accession_no AS "ACC #",
p.pat_birthdate AS "DOB",
s.mods_in_study AS "MOD",
CONVERT(varchar(32), s.study_datetime, 113) AS "Study Date",
s.study_desc AS "Study Desc",
s.study_custom1 AS "Inst Name"
FROM
dbo.patient AS p
INNER JOIN
dbo.study AS s ON s.patient_fk = p.pk
INNER JOIN
dbo.series AS se ON se.study_fk = s.pk
WHERE
accession_no like '%OUT%'
AND s.created_time >= CAST(getdate() as DATE)
AND s.created_time < CAST(DATEADD(day, 1, getdate()) as DATE)
ORDER BY
"Date/Time Sent" DESC
在上面的示例中,它返回:
RIPPED BY DATE/TIME SENT PATIENT NAME PATIENT ID ACC# DOB
BC 18 Aug 2014 12:58:44:297 DOE^JOHN^^^ HOSP1234 OUT 19510101
为了简单起见,我已经取了最后几列(在上面的示例输出中)。
工作正常。它带来了一系列研究,其中包含“&#39; OUT&#39;在accession_no列中,已经写入DB&#39;今天&#39;。
我想要归还的是&#39; pat_id&#39;的所有独特价值。在dbo.patient表中查找查询中的那些。其中一些患者发现上述查询可能已存在于dbo.patient表中,如果他们之前访问过我们的网站,但他们会有不同的“pat_id”。
我希望输出看起来像是:
RIPPED BY DATE/TIME SENT PATIENT NAME PATIENT ID_OUT PATIENT ID_EXIST ACC# DOB STUDY DATE STUDY DESC INST NAME
栏目&#39; PATIENT ID_OUT&#39;是研究中的患者ID,其值为&#39; OUT&#39;在accession_no列和列'PATIENT ID_EXIST&#39;是现有的患者ID,如果确实存在的话。 &#39; PATIENT ID_EXIST&#39;的值如果患者是新患者,在某些情况下可能是空白。
我以为我需要在这里做一个子查询,但在这种情况下,这可能不是正确的做法?如果我错了,请纠正我。
编辑:我提供了一个输出示例。我试图弄清楚输出中的患者是否有不同的患者ID&#39;基于在查询结果中搜索pat_name和pat_dob。如果pat_id列中有另一个或多个患者ID,那么我希望它们在输出中。
我希望这很清楚:)
答案 0 :(得分:0)
我通常通过将查询视为表并加入它来处理这样的任务。
SELECT p.*
FROM dbo.patient p
INNER JOIN (your big query) q
ON q.pat_id = p.pat_id