任何人都可以帮忙吗?我是一个脚本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年**前),其使用是不鼓励 –