我正在尝试加入三个表,并且我正在获取跨行数据(获取 6 行而不是 3 行)。我尝试了内,左和右加入相同的结果。请你帮助我好吗。
表格1
SELECT PATIENT,TDACTDATE,TDACTTIME,TDVALUE
FROM NurDocumentedResults A
WHERE (INTBASE = '400130')
AND (TDQUERY = 'NURPTVALUE')
AND (TDACTDATE = '20120425')
AND TDVALUE >='8.0' AND A.PATIENT='F126'
结果我得到
F126 20120425 1715 8.8
F126 20120425 1840 8.4
F126 20120425 2300 9.7
表 2
SELECT B.PATIENT,A.TESTRESULTDATE,A.TESTRESULTTIME,A.RESULT
FROM LabLSpecResultTests A
INNER JOIN LabLSpecimenFile B
ON A.URN=B.URN
AND A.TESTRESULTDATE=B.COLLECTIONDATE
WHERE A.TESTRESULTDATE='20120425'
AND (A.TEST IN ('100.0100', '100.0120', '100.0130', '100.0110'))
AND (A.RESULT > '8.0')
AND B.PATIENT='F126'
结果我得到
F126 20120425 1756 8.5
F126 20120425 2335 9.2
当我加入所有三个表时,
SELECT D.PATIENT,TDACTDATE,TDACTTIME,TDVALUE,A.RESULT,A.RESULTTIME,A.TESTRESULTDATE,A.TESTRESULTTIME
FROM NurDocumentedResults D
LEFT OUTER JOIN LabLSpecimenFile B
ON D.PATIENT=B.PATIENT AND D.TDACTDATE=B.COLLECTIONDATE
INNER JOIN LabLSpecResultTests A
ON A.URN=B.URN
AND A.TESTRESULTDATE=B.COLLECTIONDATE
WHERE (INTBASE = '400130')
AND (TDQUERY = 'NURPTVALUE')
AND (TDACTDATE = '20120425')
AND TDVALUE >='8.0'
AND A.TESTRESULTDATE='20120425'
AND (A.TEST IN ('100.0100', '100.0120', '100.0130', '100.0110'))
AND (A.RESULT > '8.0')
AND D.PATIENT='F126'
我得到以下结果
F126 20120425 1715 8.8 8.5 2463 20120425 1756
F126 20120425 1840 8.4 8.5 2463 20120425 1756
F126 20120425 2300 9.7 8.5 2463 20120425 1756
F126 20120425 1715 8.8 9.2 22789 20120425 2335
F126 20120425 1840 8.4 9.2 22789 20120425 2335
F126 20120425 2300 9.7 9.2 22789 20120425 2335