我有一個查詢將消除重複並只顯示唯一的記錄。加入多個表後刪除重複的行
SELECT DISTINCT TBLPATIENT.MRN
FROM tblpatient
輸出:
MRN
------
15257
15283
15285
15290
15291
15302
不過,我有我需要顯示更多的列,但我只想要獨特MRN
秒。
SELECT
v.PatientID,
p.firstname,
p.lastname,
p.dob,
p.mrn,
s.VisitID,
v.AdmitedDate
FROM
tblPatient p
JOIN
tblPatientVisit v ON p.id = v.PatientID
JOIN
tblPatientSmokingScreenOrder s ON v.id = s.VisitID
JOIN
DESCRIPTOR t ON s.SMOKING_STATUS_DSC_ID = DESCRIPTOR_ID
WHERE
isdate(p.DOB) = 1
AND CONVERT(date,p.DOB) <'12/10/2000'
AND v.PatientType = 'I' and
isdate(v.AdmitedDate) = 1
AND CONVERT(date,v.AdmitedDate) > '06/16/2013 16:16'
輸出:
PatientID firstname lastname dob mrn VisitID AdmitedDate
---------------------------------------------------------------------------
1 JAMES TEST 6/11/1942 100241 1 54:00.0
10 TEST3 DEMOGRAPHIC 4/7/1980 100251 13 39:00.0
5 TEST2 DEMOGRAPHIC 8/31/1938 3 12 36:00.0
21 ZACHARY EFRON 11/2/1976 100267 24 11:00.0
16 PATIENT DEMO 2/28/1943 100260 26 56:00.0
17 ALICE WONDERLAND 9/20/1942 100261 20 14:00.0
23 TEST5 BROWN 5/6/1965 15285 27 40:00.0
23 Test5 BROWN 5/6/1965 15285 27 40:00.0
如何採取上述腳本,它重構爲只顯示Test5 Brown
一次?
你能否提供來自每個表格的與患者#23相關的所有行,並訪問27?哪個表有2行?人們會認爲'tblpatient'只有每個病人一行。 'tblpatientvisit'可能對2+ 2+患者有2+行(但是,由於其他描述性列,它是否具有2+行用於相同訪問可能是您的問題),並且還不清楚是否可能存在「tblpatientvisit」和「tblpatientsmokingscreenorder」之間的1:M關係。使用'distinct'只是試圖用bandaid查詢。我們需要知道1:M rel。是 –
沒有注意到患者#23的姓名拼寫有所不同。也許'tblpatient'具有有效日期行,反映了隨着時間的推移患者姓名和其他信息的變化。該桌上有哪些字段?也許你需要一個相關的子查詢來顯示訪問時的最大有效日期記錄。 –
[如何查詢SQL表並從結果集中刪除重複行]可能的重複(http://stackoverflow.com/questions/16327383/how-to-query-sql-table-and-remove-duplicate-rows- from-a-result-set) –