求一個打印報表的SQL語句...........急........在顯等待

WYC2300 2005-06-14 02:43:28
界面輸入條件是: 基準年月: 9999/99
也就是輸入年月

1.依畫面基準年月條件抽出出應收餘額檔資料 且應收帳款總餘額<>0
欄位: 客戶編號 客戶簡稱(以客戶編號找客戶主檔取簡稱)  金額(應收帳款總餘額)未過期帳款(本月應收帳款額 - 本月收款金額),過期金額(金額 -未過期帳款)

2.以1.之客戶找應收餘額檔基準年月前一個月資料 且 過期金額 > 0
過期金額 - 本月應收帳款額 +本月收款金額 =>剩餘過期金額
欄位: 客戶編號 客戶簡稱  金額 未過期帳款  過期金額(剩餘過期金額)   
    若剩餘過期金額 > 0 則  過期一個月 =本月應收帳款額 -本月收款金額
               else 過期一個月 =過期金額
                        
3. 以2.之客戶找應收餘額檔基準年月前二個月資料 且 過期金額 > 0
過期金額 - 本月應收帳款額 +本月收款金額 =>剩餘過期金額
欄位: 客戶編號 客戶簡稱  金額 未過期帳款  過期金額(剩餘過期金額)   
    若剩餘過期金額 > 0 則   過期二個月 =本月應收帳款額 -本月收款金額
過期三個月 = 剩餘過期金額
               else 過期二個月 =過期金額 
                 過期三個月 = 0
4. 程式結束時印總計 金額 ~ 過期三個月


可以加我的QQ:254734866討論


...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyguo 2005-06-15
  • 打赏
  • 举报
回复
看着眼花。。。。
peterluolaw 2005-06-15
  • 打赏
  • 举报
回复
能看看你的代码吗?oracle的日期类型的数据是可以做加减运算的
WYC2300 2005-06-15
  • 打赏
  • 举报
回复
這個是我一看到設計書想到的sql語句,表面上是對的但實際上是錯誤的,現在不大清楚怎麼寫
WYC2300 2005-06-15
  • 打赏
  • 举报
回复
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;
WYC2300 2005-06-14
  • 打赏
  • 举报
回复
不是哦
我用的是oracle
duanhai 2005-06-14
  • 打赏
  • 举报
回复
QQ現在上不了
有MSN: liangjuncn@hotmail.com

看得有點頭痛

如果是SQLServer 數據庫的話
有一個函數:DateDiff函數,來對日期進行計算

更詳細的使用見幫助
WYC2300 2005-06-14
  • 打赏
  • 举报
回复
界面輸入條件是: 基准年月: 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. 程序结束时印总计 金额 ~ 过期三个月

我換成簡體了
qq153788616 2005-06-14
  • 打赏
  • 举报
回复
顶啊~~~~~~~~
jozosoft 2005-06-14
  • 打赏
  • 举报
回复
繁體字還好說,就是看上去有些繁雜.
SiTwo 2005-06-14
  • 打赏
  • 举报
回复
等待认识繁体字的人。。。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧