MSSQL Sorguları (T-SQL)
MSSQL sorguları, Compass modülünde Port'a eklenmiş bir MSSQL veri kaynağı üzerinde T-SQL (Transact-SQL) ile yazılan sorgulardır.
T-SQL, Microsoft SQL Server'ın SQL uzantısıdır ve standart SQL'den farklı sözdizimi öğeleri içerir. Özellikle TOP, GETDATE(), DATEADD(), NOLOCK gibi yapılar T-SQL'e özgüdür.
Güçlü Yanları
| Özellik | Açıklama |
|---|---|
| ERP / MES Entegrasyonu | SAP, Oracle EBS, Infor gibi sistemler sıklıkla MSSQL kullanır |
| T-SQL Prosedür Gücü | Stored procedure çağırma, temp table, CTE desteği |
| NOLOCK Hint | Okuma kilitlerini önleyerek canlı üretim tablolarını etkilemeden sorgu |
| Kapsamlı Tarih Fonksiyonları | DATEADD, DATEDIFF, DATEPART ile gelişmiş zaman hesaplamaları |
| JSON Desteği | FOR JSON PATH, OPENJSON() ile JSON çıktısı ve parse |
Pirivision'da Sık Kullanılan T-SQL Kalıpları
Demo Fabrika — MSSQL
Aşağıdaki örnekler Demo Fabrika MSSQL demo_fabrika.vardiya_uretim tablosunu kullanır (kolonlar: ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet, hedef). Port'taki veri kaynağı adı: Demo Fabrika - MSSQL.
Aynı veriyi kendi ortamınızda oluşturmak için → Sentetik Veri Üretimi — MSSQL
-- Son 50 üretim kaydı — TOP N kullanımı (LIMIT yerine)
SELECT TOP 50 ts,
hat_id,
makine_id,
vardiya,
urun_ailesi,
uretim_adet
FROM demo_fabrika.vardiya_uretim
WHERE ts >= DATEADD(day, -7, GETDATE())
ORDER BY ts DESC, hat_id;
-- Zaman aralığı (parametreli)
SELECT ts, hat_id, uretim_adet
FROM demo_fabrika.vardiya_uretim WITH (NOLOCK)
WHERE ts >= {{start_date}}
AND ts <= {{end_date}}
ORDER BY ts;
-- Vardiya bazlı özet
SELECT vardiya,
SUM(uretim_adet) AS toplam,
AVG(CAST(uretim_adet AS FLOAT)) AS ortalama
FROM demo_fabrika.vardiya_uretim WITH (NOLOCK)
WHERE ts >= DATEADD(day, -7, GETDATE())
GROUP BY vardiya;
-- DATEDIFF ile gün farkı
SELECT hat_id,
DATEDIFF(day, MIN(ts), MAX(ts)) AS gun_araligi
FROM demo_fabrika.vardiya_uretim
GROUP BY hat_id;
Önemli T-SQL Yapıları
| Kategori | T-SQL | Standart SQL Karşılığı |
|---|---|---|
| Satır sınırlama | SELECT TOP 100 * |
SELECT * LIMIT 100 |
| Anlık zaman | GETDATE() |
NOW() |
| Tarih ekleme | DATEADD(day,-7,GETDATE()) |
NOW() - INTERVAL '7 days' |
| Tarih farkı | DATEDIFF(s, t1, t2) |
EXTRACT(EPOCH FROM t2-t1) |
| Null yerine değer | ISNULL(val, 0) |
COALESCE(val, 0) |
| Koşullu değer | IIF(cond, a, b) |
CASE WHEN cond THEN a ELSE b END |
| Kilit önleme | FROM tablo WITH (NOLOCK) |
— |
| Tanımlayıcı | [tablo adi] (boşluklu) |
"tablo adi" |
Gereksinimler
| Gereksinim | Açıklama |
|---|---|
| Port'ta MSSQL veri kaynağı | Bağlantısı test edilmiş olmalı |
| SELECT yetkisi | Veritabanı kullanıcısının sorgulanacak tablolarda yetkisi olmalı |
Rehberler
| Rehber | Açıklama |
|---|---|
| MSSQL Sorgusu Oluşturma | Compass'ta yeni T-SQL sorgusu yazma |
| MSSQL Sorgusu Düzenleme | Mevcut sorguyu güncelleme |
| Sorgu Taşıma | Farklı klasöre taşıma |
| Sorgu Çoğaltma | Kopyalama |
| Sorgu Silme | Kaldırma |