任何人都可以幫忙嗎?我是一個腳本noob ..下面的腳本(沒有BOLDED部分給了我空的結果),如果我包含BOLDED部分,它告訴我太多的值。加入3個表空
實際上對於粗體部分,我想要的是從三個不同的表中提取。
表A(OR_ORDER)它由
ID | CLASS | FACILITY | SOURCE_TYPE | SOURCE_CODE
101 IP XY N W010
102 IP XY N W023
103 OP SX C E122
114 OP XY C R123
表d(IP_NURSING_UNIT)它由
NURSING_UNIT_CODE | SOURCE_TYPE | LONG_DESC
W010 N Ward 10
W023 N Ward 23
表H(OP_CLINIC)它由
CLINIC_CODE | SOURCE_TYPE | LONG_DESC
E122 C Eye Clinic
R123 C Dental
我希望預期的輸出如下所示。只要在long_desc列上添加...取決於source_type。如果SOURCE_TYPE是N,那麼它應該提取表d數據..和如果SOURCE_TYPE是C,那麼它應該提取表數據H..but我不知道如何加入他們..
ID | CLASS | FACILITY | SOURCE_TYPE | SOURCE_CODE | LONG_DESC
101 IP XY N W010 Ward 10
102 IP XY N W023 Ward 23
103 OP SX C E122 Eye Clinic
114 OP XY C R123 Dental
查詢:
SELECT
A.ID, A.CLASS, C.FACILITY_NAME, A.SOURCE_TYPE,
(SELECT a.source_code, d.LONG_DESC
FROM OR_ORDER A
INNER JOIN IP_NURSING_UNIT D ON a.source_code = d.nursing_unit_code
INNER JOIN OP_CLINIC H ON a.source_code = h.clinic_code),
B.ORDER_ID, B.ORDER_CATALOG_CODE, B.CATALOG_DESC,
B.START_DATE_TIME, B.END_DATE_TIME, B.ORDER_QTY,
F.LONG_DESC, G.PUBLIC_PRICE, E.PRACTITIONER_NAME
FROM
OR_ORDER A, OR_ORDER_LINE B, SM_FACILITY_PARAM C,
IP_NURSING_UNIT D, AM_PRACTITIONER E, AM_UOM F,
BL_ST_ITEM_BY_PERIOD G, OP_CLINIC H
WHERE
A.CLASS = 'OP'
AND A.ORDER_ID = B.ORDER_ID
AND A.ORDERING_FACILITY_ID = C.FACILITY_ID
AND A.ORDERING_FACILITY_ID = D.FACILITY_ID
AND A.ORDERING_FACILITY_ID = H.FACILITY_ID
AND A.SOURCE_CODE = D.NURSING_UNIT_CODE
AND A.SOURCE_CODE =H.CLINIC_CODE
AND B.ORD_PRACT_ID = E.PRACTITIONER_ID
AND (G.item_code = B.ORDER_CATALOG_CODE
AND G.OPERATING_FACILITY_ID = 'RP' AND G.EFFECTIVE_TO_DATE IS NULL)
AND B.ORDER_UOM = F.UOM_CODE AND B.ORD_DATE_TIME BETWEEN TO_DATE('05/02/2016 08:20:00', 'MM/DD/YYYY HH24:MI:SS') AND
TO_DATE('05/02/2016 08:30:00' , 'MM/DD/YYYY HH24:MI:SS') ORDER BY B.ORD_PRACT_ID
任何幫助非常感謝。在此先感謝
[不良習慣踢:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- joins.aspx) - 在ANSI - ** 92 ** SQL標準中**舊式*逗號分隔的表*樣式列表已替換爲* proper * ANSI'JOIN'語法(**超過20年**前),其使用是不鼓勵 –