界面輸入條件是: 基準年月: 9999/99
也就是輸入年月1.依畫面基準年月條件抽出出應收餘額檔資料  且應收帳款總餘額<>0                        
欄位: 客戶編號      客戶簡稱(以客戶編號找客戶主檔取簡稱)   金額(應收帳款總餘額)未過期帳款(本月應收帳款額 - 本月收款金額),過期金額(金額 -未過期帳款)2.以1.之客戶找應收餘額檔基準年月前一個月資料 且 過期金額 > 0
            過期金額  - 本月應收帳款額 +本月收款金額  =>剩餘過期金額
            欄位: 客戶編號      客戶簡稱  金額 未過期帳款   過期金額(剩餘過期金額)    
    若剩餘過期金額 > 0  則  過期一個月 =本月應收帳款額 -本月收款金額 
                 else   過期一個月 =過期金額
                        
3. 以2.之客戶找應收餘額檔基準年月前二個月資料 且 過期金額 > 0
            過期金額  - 本月應收帳款額 +本月收款金額  =>剩餘過期金額
            欄位: 客戶編號      客戶簡稱  金額 未過期帳款   過期金額(剩餘過期金額)    
    若剩餘過期金額 > 0  則   過期二個月 =本月應收帳款額 -本月收款金額   
過期三個月 = 剩餘過期金額
               else    過期二個月 =過期金額 
                   過期三個月 = 0
4. 程式結束時印總計  金額   ~  過期三個月
可以加我的QQ:254734866討論
 

解决方案 »

  1.   

    界面輸入條件是: 基准年月: 9999/99 列印
    1. 依画面基准年月条件抽出出应收余额文件资料  且应收帐款总余额 <> 0                                 (B.THSURIAMT-B.THSINCOMEAMT) AS NPASSAMT
    字段: 客户编号      客户简称(以客户编号找客户主档取简称)   金额(应收帐款总余额)未过期帐款(本月应收帐款额 - 本月收款金额)
      过期金额(金额 -未过期帐款)
    ,           (B.URIZANAMT-B.THSURIAMT+B.THSINCOMEAMT)2. 以1.之客户找应收余额档基准年月前一个月资料 且 过期金额 > 0
                过期金额  - 本月应收帐款额 +本月收款金额  =>剩余过期金额
    (B.URIZANAMT-B.THSURIAMT+B.THSINCOMEAMT-B.THSURIAMT+B.THSINCOMEAMT)  =>剩余过期金额
                字段: 客户编号      客户简称  金额 未过期帐款   过期金额(剩余过期金额)    
        若剩余过期金额 > 0  则  过期一个月 =本月应收帐款额 -本月收款金额 
                     else   过期一个月 =过期金额
                            
    3. 以2.之客户找应收余额档基准年月前二个月资料 且 过期金额 > 0
                过期金额  - 本月应收帐款额 +本月收款金额  =>剩余过期金额
                字段: 客户编号      客户简称  金额 未过期帐款   过期金额(剩余过期金额)    
        若剩余过期金额 > 0  则   过期二个月 =本月应收帐款额 -本月收款金额   
    过期三个月 = 剩余过期金额
                   else    过期二个月 =过期金额 
                       过期三个月 = 0
    4. 程序结束时印总计  金额   ~  过期三个月我換成簡體了
      

  2.   

    QQ現在上不了
    有MSN: [email protected]看得有點頭痛如果是SQLServer 數據庫的話
    有一個函數:DateDiff函數,來對日期進行計算更詳細的使用見幫助
      

  3.   

    能看看你的代码吗?oracle的日期类型的数据是可以做加减运算的
      

  4.   

    SELECT DISTINCT A.TORICD,A.SHORTNAME,A.URIZANAMT,A.NPASSAMT,B.MPass1,C.MPass2,C.MPass3
    FROM (SELECT B.TORICD,C.SHORTNAME,B.URIZANAMT,(B.THSURIAMT-B.THSINCOMEAMT) AS NPASSAMT,B.URIKAKEYM
    ,(Add_months(to_date(URIKAKEYM,'yyyy/mm'), -1)) AS URIKAKEYMSUB1
    ,(Add_months(to_date(URIKAKEYM,'yyyy/mm'), -2)) AS URIKAKEYMSUB2 
    FROM UKARM.URIZANF B LEFT JOIN UKODM.CUSTMS C ON B.TORICD=C.TORICD WHERE URIZANAMT<>'0')A 
    LEFT JOIN
    (SELECT TORICD,URIKAKEYM,(Add_months(to_date(URIKAKEYM,'yyyy/mm'), -1)) AS URIKAKEYMSUB1
     ,(CASE WHEN (URIZANAMT-THSURIAMT+THSINCOMEAMT-THSURIAMT+THSINCOMEAMT)>0 
     THEN (THSURIAMT-THSINCOMEAMT) ELSE (URIZANAMT-THSURIAMT+THSINCOMEAMT) END) AS MPass1   
     FROM UKARM.URIZANF WHERE URIZANAMT<>'0')B
    ON (A.TORICD=B.TORICD AND A.URIKAKEYMSUB1=B.URIKAKEYMSUB1)
    LEFT JOIN 
    (SELECT TORICD,URIKAKEYM,(Add_months(to_date(URIKAKEYM,'yyyy/mm'), -2)) AS URIKAKEYMSUB2
    ,(CASE WHEN (URIZANAMT-THSURIAMT+THSINCOMEAMT-THSURIAMT+THSINCOMEAMT)>0 
     THEN (THSURIAMT-THSINCOMEAMT) ELSE (URIZANAMT-THSURIAMT+THSINCOMEAMT) END) AS MPass2
    ,(CASE WHEN (URIZANAMT-THSURIAMT+THSINCOMEAMT-THSURIAMT+THSINCOMEAMT)>0 
    THEN (URIZANAMT-THSURIAMT+THSINCOMEAMT-THSURIAMT+THSINCOMEAMT) ELSE 0 END) AS MPass3  
    FROM UKARM.URIZANF WHERE URIZANAMT<>'0')C
    ON (A.TORICD=C.TORICD AND A.URIKAKEYMSUB2=C.URIKAKEYMSUB2)
    ORDER BY A.TORICD;
      

  5.   

    這個是我一看到設計書想到的sql語句,表面上是對的但實際上是錯誤的,現在不大清楚怎麼寫