Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server 使用2个表连接查询_Sql Server - Fatal编程技术网

Sql server 使用2个表连接查询

Sql server 使用2个表连接查询,sql-server,Sql Server,总金额: SELECT PB_BANK_CODE, ---- DB ITEM PB_BANK_NAME, ---- DB ITEM TOTAL_AMOUNT --- NON DB ITEM FROM GLAS_PDC_BANKS where PB_COMP_CODE=:parameter.COMP_CODE AND pb_bank_code in(select distinct pc_bank_from from glas_pdc_ch

总金额:

SELECT 
PB_BANK_CODE,    ---- DB ITEM
PB_BANK_NAME,  ---- DB ITEM
TOTAL_AMOUNT   --- NON DB ITEM
        FROM    GLAS_PDC_BANKS          

where PB_COMP_CODE=:parameter.COMP_CODE AND  pb_bank_code in(select distinct pc_bank_from from glas_pdc_cheques where PC_COMP_CODE=:parameter.COMP_CODE AND pc_due_dateTIME between :block01.date_from and :block01.date_to AND ISNULL(pc_discd,'X') = 'R')
order by pb_bank_code
还应显示赠款总额

如何将上述两个select语句连接起来使用:

BEGIN
  SELECT SUM(PC_AMOUNT) INTO :BLOCK02.TOTAL_AMOUNT
    FROM GLAS_PDC_CHEQUES
   WHERE PC_DUE_DATE BETWEEN :BLOCK01.DATE_FROM AND :BLOCK01.DATE_TO
     AND   PC_BANK_FROM = :BLOCK02.PB_BANK_CODE
     AND   NVL(PC_DISCD, 'X') = 'R';
EXCEPTION WHEN OTHERS THEN :BLOCK02.TOTAL_AMOUNT := 0;
END;
我省略了:

   SELECT b.pb_bank_code,
          b.pb.bank_name,
          b.total_amount,
          COALESCE(x.sum_amount, 0)
     FROM GLAS_PDC_BANKS b
LEFT JOIN (SELECT c.pc_bank_from,
                  SUM(c.pc_amount) 'sum_amount'
             FROM GLAS_PDC_CHEQUES c
            WHERE c.pb_comp_code = :parameter.COMP_CODE
              AND c.pc_due_date BETWEEN :block01.date_from AND :block01.date_to 
              AND c.pc_discd = 'R'
         GROUP BY c.pc_bank_from) x ON x.pc_bank_from = b.pb_bank_code
如果不是您要查找的值,那么将null值转换为x没有意义

NVL(PC_DISCD, 'X') = 'R';  --Oracle syntax btw
ISNULL(pc_discd,'X') = 'R'