Forum

Bir Önceki Değ...
 
Bildirimler
Hepsini Temizle

Bir Önceki Değer 0 ise Ondan Önceki değeri Alsın

1 Yazılar
1 Üyeler
0 Reactions
912 Görüntüleme
(@ibrahimalpak)
Gönderiler: 3
Active Member
Konu başlatıcı
 
select
   [Sayac].ID,
   [Sayac].Tarih,
   [Sayac].Aktif,
   [Sayac].Reaktif,
   [Sayac].Kapasitif,
   (ISNULL([sec].Aktif, 0) - [Sayac].Aktif)*-1   AktifFark,
   (ISNULL([sec].Reaktif, 0) - [Sayac].Reaktif)*-1 ReaktifFark,
   (ISNULL([sec].Kapasitif, 0) - [Sayac].Kapasitif)*-1 KapasitifFark,
   ((ISNULL([sec].Reaktif, 0) - [Sayac].Reaktif)*-1)/((ISNULL([sec].Aktif, 0) - [Sayac].Aktif)*-1) RA_20,
   ((ISNULL([sec].Kapasitif, 0) - [Sayac].Kapasitif)*-1)/((ISNULL([sec].Aktif, 0) - [Sayac].Aktif)*-1) KA_15
FROM   Mars_Onder_Sayac AS [Sayac]
LEFT JOIN  Mars_Onder_Sayac AS [sec]
ON [sec].ID = (SELECT max(ID) FROM Mars_Onder_Sayac WHERE ID < [Sayac].ID) and [Sayac].SayacID='1'
 
Kısaca Özetlemem gerekirse, 
 
ID   Sayac   Fark
 1  100       ---
 2      150     50
 3      200     50 
4       0         200
5       250      250 
 
Sayac farkı hep bir öncekinin farkını alıp hesaplıyor bu aşamaya kadar sorun yok fakat,
eğer ben sayaca 0 girecek olursam  doğal olarak bir öncekini 0 alarak hesaplıyor, fakat 
0 dan sonra eğer data girersem  50 getirmesi gerekirken bir önce ki değer 200 sonrasın da 
da 0 geldiği için 250-0 250 olarak hesaplıyor bu da mantık hatasına sebebiyet veriyor,
bu hatayı nasıl çözebilirim.
 
 
 
 
 
 
 
Gönderildi : 07/05/2015 19:24

Paylaş: