Ana içeriğe geç

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

MSSQL Sorgusu Oluşturma