Datebase kayıtları arasında fark hesaplama

Günlük üretim ve benzeri verilerin hesaplanmasında Database’e kayıtlı verilerin farklarını elde etmemiz gerekir. Aşağıda açıklayacağım SQL sorgusu ile bu bilgilere bağlı rapor oluşturabilirsiniz. Bu sorgular WinTr scada rapor modülüne uygun olarak hazırlanmıştır.

İlk sorgumuz scada rapor modülü tarafından standart olarak üretilen belli tarihler arasındaki kayıtları getiren sorgudur.

SELECT [DateTime],[Tag_1],[Tag_2],[Tag_3] FROM Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate'

Bu sorguyu kısaca açıklayalım. Select komutundan sonra datebase’deki kolon isimlerini yazıyoruz. From ifadesi ise database’deki tablo ismidir. WinTr standart olarak Table1 isimli tabloyu oluşturur. Where komutu ise belli tarih aralığını getirmek için sorguya eklenen bir kısıtlamadır. Where komutunu kullanmaydık tüm database’i getirecekti. StartDate ve EndDate tarih seçimi yapabilmemiz için internal scada taglarıdır.

Yukarıdaki sorgu ile tablomuz oluşturuldu. Bu tablonun altına yeni bir satırda tablodaki ilk değer ile son değer arasındaki farkı getireceğiz. Öncelikle UNION ALL komutunu anlayalım. Bu komut Tablonun altında yeni bir tablo oluşturmak için kullanılır. Her iki tablo scada içersinde tek tablo olarak görünür. Her iki tablodada kolon tipleri aynı olmalıdır. Örneğin ilk tablomuzun ilk kolonu Datetime tipinde olduğu için yeni tablodada Datetime tipinde bir değer bulunmalı. İlk sorgumuzun altına aşağıdaki satırları ekleyelim.

UNION ALL
SELECT (select Top 1 DateTime from Table1 ORDER BY DateTime DESC)

Yukarıda görüldüğü gibi UNION ALL ile ikinci bir tablo oluşturuldu ve ilk kolon DateTime için oluşturuldu. Bu kısımda Top 1 komutu ile ilk veri getirilicektir. Ancak sorgu sonuna “ORDER BY DateTime DESC” komutunu ekleyerek son kayıdın getirilmesi sağlandı. Şimdi asıl hedefimiz olan belli tarihler arasındaki ilk kayıt ile son kayıt arasında ki farkı bulan sorguyu ekleyelim.

(select Top 1 Tag_1 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ORDER BY Tag_1 DESC) - (select Top 1 Tag_1 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' )

Epey uzun bir sorgu oldu, sorgunun tamamı çok daha uzun. Bu sorgu eksi(-) işareti ile son değerden ilk değeri çıkartıyor. İlk ve son değerler belirttiğimiz tarih aralığının ilk ve son değerleridir. Sorgunun sonunda parantez’den önce bir boşluk bırakılması zorunludur. Aşağıda sorgunun tamamı birlekte olarak verilmiştir.

SELECT [DateTime],[Tag_1],[Tag_2],[Tag_3] FROM Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' UNION ALL SELECT (select Top 1 DateTime from Table1 ORDER BY DateTime DESC),(select Top 1 Tag_1 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ORDER BY Tag_1 DESC) - (select Top 1 Tag_1 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ),(select Top 1 Tag_2 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ORDER BY Tag_2 DESC) - (select Top 1 Tag_2 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ),(select Top 1 Tag_3 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' ORDER BY Tag_3 DESC) - (select Top 1 Tag_3 from Table1 WHERE [DateTime] >= 'StartDate' And [DateTime] <= 'EndDate' )

Biraz dah basit olması için başlangıç ve bitiş tarihleri bulunmayan sorguyuda aşağıya ekliyorum.

SELECT [DateTime],[Tag_1],[Tag_2],[Tag_3] FROM Table1 UNION ALL SELECT Null,(select Top 1 Tag_1 from Table1 ORDER BY Tag_1 DESC) - (select Top 1 Tag_1 from Table1),(select Top 1 Tag_2 from Table1 ORDER BY Tag_2 DESC) - (select Top 1 Tag_2 from Table1),(select Top 1 Tag_3 from Table1 ORDER BY Tag_3 DESC) - (select Top 1 Tag_3 from Table1)

 

Similar Posts

  • WinTr Scada Versiyon 5.0 Özellikleri

    Versiyon 5.0 ile birlikte bir çok yeni özellik kazanan WinTr scada’nın yeni özellikleri aşağıda listelenmiştir. 1. Scada’nın tüm fonksiyonları yenilendi, test edildi ve performansı artırıldı. Scada’nın bir çok özelliği limitsiz olarak güncellendi. 2. Shutdown komutu eklendi. Bu komut ile operatörler development sayfası gözükmeden scadayı tamamen kapatabilir. 3. Büyük ekranlar için oluşturulan projeler, küçük ekranlı bilgisayarlarda…

  • Scada Administrator

    WinTr Scada Window 7 kullanıcıları programı ilk çalıştırdığında “Bilinmeyen bir yayımcıya ait aşağıdaki programın bilgisayarınızda değişiklik yapmasına izin veriyormusunuz?” sorusu ile karşılaşıyor. Bu soruyu bir daha görmek istemiyorsanız bilgisayarınızın güvenlik seviyesini değiştirmelisiniz. Bunun için “Denetim Masası/Tüm Denetim Masası Öğeleri/İşlem Merkezi” bu adresi adres çubuğuna yapıştırarak’da erişebilirsiniz. Açılan sayfada sol kısımda yer alan “Kullanıcı Hesabı Denetimi ayarlarını değiştir”…

  • SQL Server Rapor Sorguları

    WinTr Scada ver 4.1.0 ile birlikte Sql server’a kayıt girişleri farklı metodlar ile yapılabiliyor. Bu seçenekler ile database gereksiz yere büyümeden kayıt işlemlerini gerçekleştirir. Ayrıca eski versiyonlarda olay bazlı kayıtlar için script yazmak gerekliydi, Triggered seçeneğiyle birlikte olay bazlı kayıt işlemleri yapılabilir. Periodically seçeneği haricindeki kayıt yöntemlerinden birini kullandığınız taktirde database satırlarında boşluklar oluşacaktır. Bunun…

  • WinTr Scada Yenilikler

    WinTr Scada güncellemeleri hakkında tüm bilgiler bu sayfada toplanmıştır. Yeni versiyonların duyuruları da bu sayfada yapılacaktır. Ver 5.5.9 24.01.2023 Ver 5.5.8 09.04.2021 Ver 5.5.7 09.04.2020 Ver 5.5.6 30.11.2019 Ver 5.5.5 20.07.2019 Ver 5.5.3 29.04.2019 Ver 5.5.2 21.09.2017 Ver 5.5.1 27.07.2017 Ver 5.4.7 15.04.2017 Ver 5.4.6 14.10.2016  Ver 5.4.4 20.05.2016  Ver 5.4.0 23.03.2016  Ver 5.3.7 11.03.2016…

Bir yanıt yazın