SQL 一問 (加總問題) |
尚未結案
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
假設 我有TABLE1 欄位為(DATE TYPE A1 A2) 分別代表 (日期 種類 單價 數量) 那嚜 SELECT DATE,TYPE,A1,A2,(A1*A2) TOTAL FROM TABLE1 可以得到 (日期 種類 單價 數量 總價)的資料 但如果我要在每列資料中 再去統計相同(種類)
在(當天日期含當日)的累計數量 及累計總價 我會利用做加總 SELECT SUM(A2),SUM(A1*A2) FORM TABLE1 WHERE DATE <=(日期) 但是 如何把兩個SQL組成一個變成以下欄位? ----日期---種類--單價--數量--總價--累計數量--累計總價 --0940101--花瓶---50----2----100------2--------100
--0940102--花瓶---50----3----150------5--------250
--0940103--花瓶---50----9----450-----16--------800 希望大家指教!
------
BCDEFHIJKLMNOPQRSTUVWXZ |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi isthatu, 資料少時可以這樣做,但資料若很多,效能可能不太好!
SELECT DT, TYPE, PRICE, QTY, QTY * PRICE AS AMOUNT, (SELECT SUM(QTY) FROM TABLE2 T1 WHERE T1.DT <= T.DT AND T1.TYPE = T.TYPE) AS ADD_QTY, (SELECT SUM(QTY * PRICE) FROM TABLE2 T1 WHERE T1.DT <= T.DT AND T1.TYPE = T.TYPE) AS ADD_AMOUNT FROM TABLE2 TPS:確認 DT Type 必須為 Unique Key,否則累計加種可能會有錯誤 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
lutienlung
一般會員 發表:3 回覆:5 積分:1 註冊:2005-04-01 發送簡訊給我 |
同Fishman大哥的方法, 在mssql2000底下, 考慮多筆資料的作法.
declare @tmp table
(
date_ datetime,
type_ varchar(20),
price_ numeric(20,5),
qty_ numeric(20,5)
) INSERT INTO @tmp
SELECT '2005/9/1', '花瓶', 50, 2
UNION ALL
SELECT '2005/9/2', '花瓶', 50, 3
UNION ALL
SELECT '2005/9/3', '花瓶', 50, 9 declare @tmp2 table
(
date_ datetime,
type_ varchar(20),
amount_ numeric(20,5),
total_ numeric(20,5)
) INSERT INTO @tmp2
SELECT a.date_, a.type_, sum(b.qty_), sum(b.price_*b.qty_)
FROM @tmp a, @tmp b
WHERE a.type_ = b.type_ and b.date_<= a.date_
GROUP BY a.date_, a.type_ SELECT a.*, b.amount_, b.total_
FROM @tmp a, @tmp2 b
WHERE a.date_ = b.date_ AND a.type_ = b.type_
ORDER BY a.type_, a.date_ ------------------------
小小看法 不好意思喔!
------------------------
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |