Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用单个变量替换同一组变量_Sql_Oracle - Fatal编程技术网

Sql 用单个变量替换同一组变量

Sql 用单个变量替换同一组变量,sql,oracle,Sql,Oracle,我希望将所有%variable1%、%variable2%、%variable3%、%variable4%替换为一组变量,而不重复调用相同的变量,因为参数大小在我的程序上是固定的,是否有只使用SQL查询就可以完成的过程 SELECT b.cons_no, b.NAME , b.cat_cd, b.bill_no, b.bill_date, FROM (SELECT a.cons_cd cons_no, a.cons_name NAME, a.catego

我希望将所有%variable1%、%variable2%、%variable3%、%variable4%替换为一组变量,而不重复调用相同的变量,因为参数大小在我的程序上是固定的,是否有只使用SQL查询就可以完成的过程

SELECT 
    b.cons_no, b.NAME , b.cat_cd, b.bill_no, b.bill_date, 
FROM 
    (SELECT 
         a.cons_cd cons_no, a.cons_name NAME, a.category_cd cat_cd,
         a.bill_no bill_no, TO_CHAR (a.proc_date, 'DD/MM/YYYY') 
         bill_date 
     FROM 
         mstcons_bill_print a, mstcons b
     WHERE 
         b.cons_cd = a.cons_cd
         AND due_date < TRUNC (SYSDATE)
         AND a.bill_no IN (
                  SELECT TO_CHAR (MAX (bill_no))
                  FROM mstcons_bill_print
                  WHERE cons_cd IN (
                              SELECT cons_cd
                              FROM mstcons x, mstdtc z
                              WHERE x.dtc_cd = z.dtc_cd
                                AND x.dtc_cd LIKE '%variable1%'
                                AND x.category_cd LIKE '%variable2%'
                                AND x.route LIKE '%variable3%'
                                AND z.feeder_cd LIKE '%variable4%')
                  GROUP BY cons_cd
                  MINUS
                  SELECT TO_CHAR (MAX (bill_no))
                  FROM trnpaymnt_dtls
                  WHERE cons_cd IN (
                              SELECT cons_cd
                              FROM mstcons x, mstdtc z
                              WHERE x.dtc_cd = z.dtc_cd
                                AND x.dtc_cd LIKE '%variable1%'
                                AND x.category_cd LIKE '%variable2%'
                                AND x.route LIKE '%variable3%'
                                AND z.feeder_cd LIKE '%variable4%')
                  GROUP BY cons_cd)) b,
       (SELECT   c.bill_no bill_no,
                 SUM (c.achd_cd) bill_net,
                 SUM (c.achd_cd) bill_paid
            FROM trncons_achd c
           WHERE c.achd_cd IN ('CURDMD', 'ARRE', 'CURINT', 'INTA')
            AND c.bill_no IN (
                    SELECT   TO_CHAR (MAX (bill_no))
                        FROM mstcons_bill_print
                       WHERE cons_cd IN (
                                SELECT cons_cd
                                  FROM mstcons x, mstdtc z
                                 WHERE x.dtc_cd = z.dtc_cd
                                   AND x.dtc_cd LIKE '%variable1%'
                                 AND x.category_cd LIKE '%variable2%'
                                 AND x.route LIKE '%variable3%'
                                 AND z.feeder_cd LIKE '%variable4%')
                    GROUP BY cons_cd
                    MINUS
                    SELECT   TO_CHAR (MAX (bill_no))
                        FROM trnpaymnt_dtls
                       WHERE cons_cd IN (
                                SELECT cons_cd
                                  FROM mstcons x, mstdtc z
                                 WHERE x.dtc_cd = z.dtc_cd
                                   AND x.dtc_cd LIKE '%variable1%'
                                 AND x.category_cd LIKE '%variable2%'
                                 AND x.route LIKE '%variable3%'
                                 AND z.feeder_cd LIKE '%variable4%')
                    GROUP BY cons_cd)
        GROUP BY c.bill_no) a
    WHERE a.bill_no = b.bill_no AND a.bill_net - a.bill_paid > 300;

对不起,我不明白你在问什么。但通过将子查询提取到CTE中,您肯定可以提高脚本的可读性。我想用一个变量重新保存这个变量,这可能吗?我想要的是,我不想在查询中重复提供这个变量。因为我已经固定了前端的4个变量,我无法扩展,因为所有变量都是相同的。因此,是否有任何规定。请引导/帮助。谢谢