我是新来的SQL和PLSQL。我想有一种方法可以加入这两个查询,但我很难过。它们是完全一样的,除了所述第一查询找到一个不同e.identifying_party,说“5111”,那么第二个发现使用e.identifying_party =“5111”的独特child_id。合并2个SQL查询到1个使用结果从第一
SELECT DISTINCT e.identifying_party
FROM voucher b,
cc_authorization d,
case e,
episode g,
invoice c,
invoice_item f,
svcperiod_info v
WHERE b.cc_authorization_id = d.cc_authorization_id
AND d.subsidy_id = g.episode_id
AND g.case_id = e.case_id
AND b.voucher_id = f.voucher_id
AND f.invoice_id = c.invoice_id
AND v.svcperiod_id = c.svcperiod_id
AND f.status = 8
AND f.net_amount > 0
AND (v.end_dt >= '01-APR-17'
AND v.end_dt < '02-APR-17')
AND e.case_id <4000;
第二个查询是完全一样的,但使用的输入e.identifying_party:
SELECT DISTINCT b.child_id
FROM voucher b,
cc_authorization d,
case e,
episode g,
invoice c,
invoice_item f,
svcperiod_info v
WHERE b.cc_authorization_id = d.cc_authorization_id
AND d.subsidy_id = g.episode_id
AND g.case_id = e.case_id
AND b.voucher_id = f.voucher_id
AND f.invoice_id = c.invoice_id
AND v.svcperiod_id = c.svcperiod_id
AND f.status = 8
AND f.net_amount > 0
AND (v.end_dt >= '01-APR-17'
AND v.end_dt < '02-APR-17')
AND e.identifying_party = 5111
AND e.case_id <4000;
而且,我调试别人的代码,因此,如果有任何其他修改或丢失信息, 请告诉我。谢谢!
*不要*的'from'子句中使用逗号。 *总是*使用正确的,明确的'join'语法。 –
您不应再使用80年代的这种连接语法。 1992年引入了显式联接是有原因的。不要将日期与字符串进行比较。特别是在某些语言中不包含日期名称的情况下,您希望DBMS能够正确理解和解释。使用日期文字instaead:'AND(v.end_dt> = DATE '2017年4月1日' AND v.end_dt <“2017-04-02''不要混淆别名有什么信'C'。使用'i'或'inv'或其他我们可以阅读和理解的东西 –
你是什么意思加入?你喜欢你的结果吗?如果你使用Select distinct e.identifying_party,b.child_id on你的第一个查询,你也会得到具有identify_party = 5111这是你的第二个查询条件的child_id。 –