2009-10-12 8 views
7

SQL Serverでデータロードの移動範囲を計算する必要があります(少なくともこれが呼び出されると思います)。私は配列を使用することができればこれは簡単ですが、これはMS SQLでは不可能であることを理解しています。中(SQL Serverでの移動範囲の計算(配列なし)

1 
3 
2 
6 
3 

が、私はこれらの数字のそれぞれの違いを取得する必要があります:

は、SQL Serverのテーブルに以下の私が持っているとしましょう:

はあなたに私が必要なもののアイデアを与えるために、順)、すなわち:

2^2=4 
1^2=1 
4^2=16 
3^2=9 

|1-3|=2 
|3-2|=1 
|6-2|=4 
|3-6|=3 

そして、これらを二乗3210

EDIT:あなたは平均移動のためにこれらを平方しないでくださいことを指摘し、おそらくWORTH - 私が間違っていた

そして、それらを合計:

4+1+16+9=30 

が続いて値の数で割ます

30/5=6 

次に、平方根this:

2.5(ish) 

EDIT:あなたがそれらを二乗アレントので、誰もがちょうど素晴らしいことだ最初のステップ、と私を助けることができる場合は、それらに

のいずれかをSQROOTINGアレント - 私は残りの部分を自分で行うことができます。考慮すべき

いくつか他のもの:
- SQL Serverでストアドプロシージャを使用して
- ありデータ(100Sまたは値の1000)のかなり多くがあり、彼らは毎日または毎週言うアサーションする必要があります

事前に感謝します。

〜ボブ

+0

素敵な質問。私は今日私のブログ投稿をそれから作り出すと思う。 – Quassnoi

答えて

7
WITH nums AS 
     (
     SELECT num, ROW_NUMBER() OVER (ORDER BY id) AS rn 
     FROM mytable 
     ) 
SELECT SQRT(AVG(POWER(tp.num - tf.num, 2))) 
FROM nums tp 
JOIN nums tf 
ON  tf.rn = tp.rn + 1