2016-04-01 6 views
0

隣り合わせに2つの行に基づいてパーセンテージを計算する必要があります。 'グループ'SQL Server 2012の更新を使用して2行を組み合わせてSET値を取得する

コードキーワードの近くに

不適切な構文を::

Update L 
Set [TCKR%] = (L.Stock_Close - E.Stock_Close)/L.Stock_Close 
From HistData as L 
Inner Join HistData as E on L.RecordID = E.RecordID + 1 
Where L.RecordID = L.RecordID 
Group by L.RecordID, L.Stock_Close, E.Stock_Close 

Order byはどちらか

動作しませんが Selectステートメントは、それらを見つけ、正しく計算が、更新エラーが語ります
+2

UPDATEクエリで集約を使用することはできません。この回答を確認してください:http://stackoverflow.com/a/2853556/5948715 – Balde

答えて

0

この場合、GROUP BYを実行する理由がないと思います。

UPDATE L 
SET [TCKR%] = (L.Stock_Close - E.Stock_Close)/L.Stock_Close 
FROM HistData as L 
JOIN HistData AS E on L.RecordID = E.RecordID + 1 

注:Stock_Closeはタイプintであるなら、あなたは整数の除算を避けるために1.0によって推薦または分母のいずれかを乗算しなければなりません。

+0

私はそれらを注文しない限り、レコードは順序にありません。これはグループなしで正しく動作します。間違った行を更新します。また、[TCKR%]は10進数(9,6)です。だからRecordIDで行を何とか注文する必要があります。 –

+0

実際にあなたのコードは、レコードIDは、デフォルトでは昇順ですので、私の1行のが のRecordID TICKR%の NULL 2 0.0005 3 -0.0003 –

+0

またはどのように下の行を更新するには、私はテーブルを並べ替えることができ、それをオフになりますか? –

関連する問題