我需要構建一份報告以顯示每個員工(主要查詢)以及每個測試的日期和/或結果,併爲每個測試列分別顯示一列測試。我想我的查詢的結果是這樣的:需要多個子查詢,分別返回每個記錄中的所有記錄
FName LName TB Date TB Result XrayDate
--------------------------------------------------
Bob Jones 10/1/2016 P 10/1/2016
9/1/2015 P 8/1/2015
9/15/2014 N 7/1/2014
8/3/2013 N
10/1/2012 Q
9/4/2011 P
8/16/2010 P
下面是SQL我現在有,與子查詢在我FROM語句,在TB日期/結果拉和XRayDate,但結果乘以一次我爲XRayDate添加第二個子查詢,給我21結果,而不是總共7行數據。
EMPLOYEE.FLDLNAME,
EMPLOYEE.FLDFNAME,
EMPLOYEE.FLDREC_NUM,
TUBER.FLDDATE as "TUBER Date",
TUBER.FLDCLASS as "TUBER Result",
XRayDate.FLDDATE as "XRay Date"
FROM EMPLOYEE EMPLOYEE
LEFT OUTER JOIN
(SELECT TUBER.FLDDATE, TUBER.FLDCLASS, TUBER.FLDEMPLOYEE
FROM TUBER TUBER) TUBER
ON EMPLOYEE.FLDREC_NUM = TUBER.FLDEMPLOYEE
LEFT OUTER JOIN
(SELECT PHYSLOG.FLDDATE, PHYSLOG.FLDTYPE,PHYSLOG.FLDEMPLOYEE
FROM PHYSLOG PHYSLOG
WHERE PHYSLOG.FLDTYPE = 'CXR') XrayDate
ON EMPLOYEE.FLDREC_NUM = XrayDate.FLDEMPLOYEE `EMPLOYEE.FLDLNAME
下面是使用SQL上述結果的一個樣本:
Fname LName TB Date TB Result Xray Date
---------------------------------------
Bob Jones 10/1/2016 P 10/1/2016
10/1/2016 P 8/1/2015
10/1/2016 P 7/1/2014
9/1/2015 P 10/1/2016
9/1/2015 P 8/1/2015
9/1/2015 P 7/1/2014
9/15/2015 N 10/1/2016
9/15/2015 N 8/1/2015
9/15/2015 N 7/1/2014
8/3/2013 N 10/1/2016
8/3/2013 N 8/1/2015
8/3/2013 N 7/1/2014
10/1/2012 Q 10/1/2016
10/1/2012 Q 8/1/2015
10/1/2012 Q 7/1/2014
9/4/2011 P 10/1/2016
9/4/2011 P 8/1/2015
9/4/2011 P 7/1/2014
8/16/2010 P 10/1/2016
8/16/2010 P 8/1/2015
8/16/2010 P 7/1/2014
我新,以在SQL Developer中的子查詢,讓您的建議/反饋是受歡迎的。
在你的第二個子查詢中嘗試分組。 SELECT MAX(PHYSLOG.FLDDATE)FLDDATE,PHYSLOG.FLDTYPE,PHYSLOG.FLDEMPLOYEE FROM PHYSLOG PHYSLOG WHERE PHYSLOG.FLDTYPE = 'CXR' \t組由PHYSLOG.FLDTYPE,PHYSLOG.FLDEMPLOYEE – Kostya
如果上述建議沒有幫助試試看看[這個問題](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a - 非常 - 簡單的SQL查詢)。它解釋了試圖回答問題時,有用的樣本數據的可能性。 –
別名的概念是爲對象提供不同的名稱。這通常是爲了輸入較少。用與表格相同的名稱來替換表格只是額外的輸入練習。這與提供清晰度相反。你必須看兩遍才能意識到它在做什麼。並且在你的子查詢中不要選擇你沒有使用的列(你不必選擇能夠在連接中使用它的列)。 –