2011-05-26 37 views
1

想象我有一個MSSQL 2005臺(bbstats)即每週更新顯示爲一個團隊計算領導人棒球統計變化MSSQL

week 1 
Player  H SO HR 
Sammy  7 11 2 
Ted   14 3 0 
Arthur  2 15 0 
Zach   9 14 3 

    week 2 
Player  H SO HR 
Sammy  12 16 4 
Ted   21 7 1 
Arthur  3 18 0 
Zach  12 18 3 

棒球成就 各種累積的類別我想以文字強調那裏已經在每個類別 領導者的變化,所以在第二週後,沒有什麼可報告命中(H);扎克加入了亞瑟,大部分三振出局(SO)在 18;和薩米是在本壘打(HR)與4

新領導人所以我想成立一​​個過程像 一)保存歷史數據(周1)表bbstatsPrior, 二)更新bbstats爲新的結果 - 我不需要這方面的幫助c)比賽隊員的球員表(s與領帶)與每個球隊的最大值 並且只在他們不同的球隊出局 d)移動到下一列並重復

在任何現實世界的例子中,將會有顯着更多的列來計算

感謝


應對Brents評論,我真的領導人爲每個類別 任何修改完成後,我會像

select top 1 with ties player 
from bbstatsPrior 
order by H desc 

select top 1 with ties player,H 
from bbstats 
order by H desc 

然後我想要比較每個查詢中的播放器(我需要做臨時表)嗎?如果它們不同,我想輸出第二個select語句。對H類泰德是領導者'這兩個表,但對於其他類別的有周之間變化

然後我可以遍歷列使用

select name from sys.all_columns sc 
where sc.object_id=object_id('bbstats') and name <>'player' 

回答

0

如果統計的數量不經常更改,您可以輕鬆編寫一個查詢來獲取這些數據。加入bbStats到bbStatsPrior,其中bbstatsprior.week < bbstats.week和[email protected]。然後,只需在bbstats.Hits和bbstatsPrior.Hits之間做一個簡單的比較即可獲得您的區別。

如果統計信息經常發生變化,您可以使用動態SQL對與特定模式匹配的所有列執行此操作,或者在基於該表的sys.columns列的列表中執行此操作?

您可以爲每個stat列添加一列,以指定使用相關子查詢的領導者來查找該列的最大值並查看它是否等於當前記錄。

這可能會讓你開始,但我建議發佈你目前必須做到的事情,社區可以從那裏幫助你。