2016-04-01 7 views
0

Yan yana iki satıra dayalı bir yüzde hesaplamam gerekiyor. Select ifadesi onları bulur ve doğru olarak hesaplayan ancak Güncelleme hatası diyor ki: anahtar kelime 'Grubu'SQL Server 2012 Güncelle'yi kullanarak SET değerini almak için 2 satırı birleştirmeyi seçin

Kod yakın

yanlış sözdizimi:

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 ya

çalışmıyor
+2

UPDATE sorgusunda bir toplamı kullanamazsınız. Bu cevabı kontrol edin: http://stackoverflow.com/a/2853556/5948715 – Balde

cevap

0

Bu durumda bir GROUP BY gerçekleştirmenin bir nedeni olduğunu düşünmüyorum:

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 

Not: Stock_Close tip int taşımaktadır o zaman nominator veya tamsayı bölme mani olmak için 1.0 tarafından paydayı ya çarpmak zorunda.

+0

Kayıt olmadıkça kayıtlar sıralı değil. Bu grup olmadan doğru şekilde çalışır; yanlış satırları günceller, ayrıca [TCKR%] ondalık (9,6): select dediğim gibi çalışır. Yani bir şekilde RecordID tarafından Satırlar Sipariş gerekir. –

+0

Aslında kodunuzu recordID varsayılan olarak artan bu yüzden 2 0,0005 3 -0,0003 –

+0

Veya nasıl Tablo yeniden düzenleyebilirsiniz onun recordID TICKR% BOŞ altındaki satırı güncellenmesi benim bir satır onu yapar? –

İlgili konular