※ 引述《lisyu (游小蝦)》之銘言:
: ※ 引述《hfnadkv (衝衝衝)》之銘言:
: : 目前遇到一個問題,就是資料欄位的方式是長成這樣
: : 因為年份會一直增加
: : 如何利用SQL不寫死,去自動算出成長率呢?
: : 年 金額
: : 2007 3000
: : 2008 4000
: : 2009 5000
: : 算各年的成長率
: : 年 金額 成長率
: : 2007 3000 0
: : 2008 4000 0.33
: : 2009 5000 0.25
: select year,amt,(amt-ISNULL(preTable.amt,amt))/ISNULL(preTable.amt,amt)
: from AmtTable a
: LEFT JOIN AmtTable as preTable
: on a.year-1 = preTable.Year
: 因為手邊電腦沒SQL
: 所以沒辦法實測
: 不過應該會OK...XD
: 如果有誤,等明天開筆電再來試
想請問這個方法可以用在多表身的計算上嗎?
例如
單號 月份 專櫃 銷售金額
==========================
001 1 A 5000
1 B 4000
--------------------------
002 2 A 4500
2 B 6000
--------------------------
003 3 A 5500
3 B 3500
3 C 2000←新增
--------------------------
小弟用的DB是MS SQL2008
自已寫出來了,分享給各位鄉民
select a.bid,a.periods,a.store,b.amounts,b.sortno into #temp
from 表頭table a inner join 表身table b on a.bid = b.bid
order by a.store ,a.periods
select c.sortno,c.store,c.periods,c.amounts,preTable.amounts,
ROUND(cast(c.amounts-ISNULL(preTable .amounts,c.amounts)AS
FLOAT)/ISNULL(preTable .amounts,c.amounts),2)*100
from #temp c LEFT JOIN #temp as preTable on c.periods -1 = preTable .periods
WHERE c.store = preTable.store and c.sortno = preTable.sortno
drop table #temp
如果有大大覺得那裡可能會產生BUG請告訴我( ̄▽ ̄#)﹏﹏
對程式有不懂的部份歡迎提問
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.23.111
※ 編輯: MagicPaul 來自: 36.233.12.197 (01/01 23:53)