線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2702
推到 Plurk!
推到 Facebook!

對加總後的欄位再做運算

答題得分者是:pedro
selo
一般會員


發表:3
回覆:5
積分:1
註冊:2008-03-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-13 18:06:09 IP:220.130.xxx.xxx 訂閱
'select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱'
如果我現在想對結餘跟可能最後結餘座加總然後把數值呈現在最後一筆資料

請問應該怎麼做比較適合?

EX

客戶名稱 結餘 可能最後結餘
A 100 1000
B 200 2000
合計 300 3000 <---多出這一行


pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-13 21:29:47 IP:61.217.xxx.xxx 未訂閱
您好

1.用union
select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱
union
select 客戶名稱,xxxx,xxx from 對帳單 group by xxx
產生最後一行合計欄位
2.用報表引擎的加總功能
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-14 01:54:00 IP:61.67.xxx.xxx 未訂閱
利用 union 來做

select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱
union
select '合計', (SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單

註: '合計' 就是一個字串, 不是變數或欄位名稱


ps:不好意思, 回本文後才發現已經有人先回了
編輯記錄
P.D. 重新編輯於 2008-03-14 01:54:54, 註解 無‧
selo
一般會員


發表:3
回覆:5
積分:1
註冊:2008-03-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-14 09:23:28 IP:220.130.xxx.xxx 訂閱
感謝大家的回應 不過現在還有個問題就是說

那個合計兩個字是用 " "來包住他嗎?

如果用' ' 他會出現錯誤

另外它會出現參數太少 預期個數1

好奇怪 我並沒有用變數啊- -

adoquery1.close;
adoquery1.sql.clear;
s:='select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱' ;
s:=s ' union select "合計",(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單';
adoquery1.Sql.add(s);
adoquery1.open;
===================引 用 P.D. 文 章===================
利用 union 來做

select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱
union
select '合計', (SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單

註: '合計' 就是一個字串, 不是變數或欄位名稱


ps:不好意思, 回本文後才發現已經有人先回了
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-03-14 09:35:28 IP:60.248.xxx.xxx 未訂閱
1.union前後的欄位型態及欄位數需一致,由第二個select來看,合計需加單引號
2.query元件會把sql語法有':'(冒號之元)之後當做參數名稱,有可能某些中文字的其中一碼是′:',建議資料欄位名稱使用英文比較不會有延伸問題.

http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=92798

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-03-14 23:14:56 IP:61.67.xxx.xxx 未訂閱
嗯! 仔細想想, 你要的功能好像做不太到, 我給的sql也有錯, 使用 union , 其中 select  後的欄位必須一致且對應才可以, 否則就會有錯誤, 所以按 union 的做法, 只能分別算出A的總和, B的總和, 要算出 A+B 的總和, SQL的語法必須為
select sum(xxxxxx) as xxx, sum(xxxx) as xxxx from .....即與 上段的 select 客戶名稱, sum(xxxx)..... 產生欄位不一致了, 附上一個 union 實作的圖片給你參考, 同時說明 select '合計" 的結果顯示出來是怎樣的畫面


selo
一般會員


發表:3
回覆:5
積分:1
註冊:2008-03-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-03-15 08:59:22 IP:220.130.xxx.xxx 訂閱
s:='select 客戶名稱,(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 group by 客戶名稱' ;
s:=s ' union select ''合計'',(SUM(已入帳)-SUM(支出)) AS 結餘,(SUM(已報出) - SUM(支出)) AS 可能最後餘額 from 對帳單 order by 結餘';

我是照前輩們的話自己加以修改就得到我要的東西了

主要合計那邊是兩個 ' ' 這樣SQL才不會說有錯誤
===================引 用 P.D. 文 章===================
嗯! 仔細想想, 你要的功能好像做不太到, 我給的sql也有錯, 使用 union , 其中 select 後的欄位必須一致且對應才可以, 否則就會有錯誤, 所以按 union 的做法, 只能分別算出A的總和, B的總和, 要算出 A B 的總和, SQL的語法必須為
select sum(xxxxxx) as xxx, sum(xxxx) as xxxx from .....即與 上段的 select 客戶名稱, sum(xxxx)..... 產生欄位不一致了, 附上一個 union 實作的圖片給你參考, 同時說明 select '合計" 的結果顯示出來是怎樣的畫面


系統時間:2024-05-16 16:57:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!