我们有一个使用以下内容创建CSV的SQL脚本:
SELECT DISTINCT auf_kopf.auf_nr, TO_CHAR(auf_kopf.erfass_dat,'DD/MM/YYYY'), TO_CHAR(auf_kopf.liefer_dat,'DD/MM/YYYY'), v_ord_custname.cust_name, auf_pos.auf_pos, v_auf_stat_0.anz, v_reason_code_1.reason_code, v_reason_code_1.reason_desc, v_auf_pos_vmat.glas1, auf_pos.glas2, auf_kopf.auf_off, auf_pos.ver_art
FROM auf_kopf, auf_pos, v_auf_pos_vmat, v_auf_stat_0, v_ord_custname, v_reason_code_1, glas_daten_basis
WHERE auf_kopf.erfass_dat >sysdate-7
AND auf_kopf.kopf_reason IS NOT NULL
AND (auf_kopf.auf_nr=auf_pos.auf_nr(+))
AND (auf_pos.auf_nr=v_auf_pos_vmat.auf_nr(+))
AND (auf_pos.auf_pos=v_auf_pos_vmat.auf_pos(+))
AND (auf_pos.variante=v_auf_pos_vmat.variante(+))
AND (auf_pos.auf_nr=v_auf_stat_0.auf_nr)
AND (auf_pos.auf_pos=v_auf_stat_0.auf_pos)
AND (auf_pos.variante=v_auf_stat_0.variante)
AND (auf_kopf.auf_nr=v_ord_custname.order_no)
AND (auf_kopf.auf_nr=v_reason_code_1.order_no(+));
有一个名为glas_daten_basis
的表格,其中包含v_auf_pos_vmat.glas1
和auf_pos.glas2
所示代码的说明。我们如何显示描述,因为我认为需要子查询,但我无法使其工作。
glas_daten_basis.gl_bez
和v_auf_pos_vmat.glas1
需要auf_pos.glas2
(说明)。可以使用glas_daten_basis.idnr
和v_auf_pos_vmat.glas1
匹配代码。
答案 0 :(得分:2)
据我所知,我认为您只需加入glas_daten_basis
两次:
SELECT DISTINCT auf_kopf.auf_nr, TO_CHAR(auf_kopf.erfass_dat,'DD/MM/YYYY'),
TO_CHAR(auf_kopf.liefer_dat,'DD/MM/YYYY'), v_ord_custname.cust_name,
auf_pos.auf_pos, v_auf_stat_0.anz, v_reason_code_1.reason_code,
v_reason_code_1.reason_desc,
v_auf_pos_vmat.glas1 ||' '|| gd_basis1.gl_bez as glas1,
auf_pos.glas2 ||' '|| gd_basis2.gl_bez as glas2,
auf_kopf.auf_off, auf_pos.ver_art
FROM auf_kopf, auf_pos, v_auf_pos_vmat, v_auf_stat_0, v_ord_custname,
v_reason_code_1, glas_daten_basis gd_basis1, glas_daten_basis gd_basis2
WHERE auf_kopf.erfass_dat >sysdate-7
AND auf_kopf.kopf_reason IS NOT NULL
AND (auf_kopf.auf_nr=auf_pos.auf_nr(+))
AND (auf_pos.auf_nr=v_auf_pos_vmat.auf_nr(+))
AND (auf_pos.auf_pos=v_auf_pos_vmat.auf_pos(+))
AND (auf_pos.variante=v_auf_pos_vmat.variante(+))
AND (auf_pos.auf_nr=v_auf_stat_0.auf_nr)
AND (auf_pos.auf_pos=v_auf_stat_0.auf_pos)
AND (auf_pos.variante=v_auf_stat_0.variante)
AND (auf_kopf.auf_nr=v_ord_custname.order_no)
AND (auf_kopf.auf_nr=v_reason_code_1.order_no(+))
AND (v_auf_pos_vmat.glas1 = gd_basis1.idnr(+))
AND (auf_pos.glas2 = gd_basis2.idnr(+));
我将对该表的两个引用别名,以便您可以区分它们。该表的一个实例外部连接到v_auf_pos_vmat
,另一个实例连接到auf_pos
。已经有一段时间了,因为我使用了旧的(+)
符号,但我认为我已经把它们放在了正确的地方,因为你正在做的......
顺便说一下,所有条件的括号都是不必要的,因为没有歧义可以解决。