Re: [SQL ] 計算成長率問題(已解)

看板Database作者 (達人)時間12年前 (2013/12/19 10:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《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)
文章代碼(AID): #1IibfUj_ (Database)