COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
58/ 65

Veri mühendisliği

PIVOT, UNPIVOT ve koşullu aggregation

Rapor şeklini değiştirirken grain’i koru.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

PIVOT, seçilen değerleri sütunlara taşıyıp aggregation uygular. Kaynakta gereksiz sütun bırakırsan örtük gruplama beklemediğin kadar satır üretir. Önce yalnız grup anahtarı, pivot anahtarı ve ölçüden oluşan kaynak hazırla. CASE ile koşullu aggregation çoğu raporda daha görünür ve esnektir.

UNPIVOT sütunları satırlara taşır; NULL değerlerin elenmesi davranışını dikkate al. Dinamik PIVOT yapısal sütun listesi üretir: izinli tanımlayıcılar, QUOTENAME ve güvenli değer parametreleri gerekir. Bu ders sabit Paid/Pending/Cancelled durumlarını kullanır. Sıfır ile veri yok anlamındaki NULL aynı değildir; ancak count raporunda sıfır göstermek çoğu zaman açık bir tercihtir.

NERESİNDE KULLANIRSIN?

Dashboard sütunlarını ve uzun formatı hazırlamak için.

SIK YAPILAN HATA

PIVOT kaynağında fazla sütun bırakmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT CustomerId, SUM(CASE WHEN Status = 'Paid' THEN 1 ELSE 0 END) AS Paid FROM lab.SalesOrder GROUP BY CustomerId;

Açık koşullu aggregation kullanılır.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Paid ve Pending sayısını CASE ile müşteri bazında getir.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT CustomerId, SUM(CASE WHEN Status = 'Paid' THEN 1 ELSE 0 END) AS Paid, SUM(CASE WHEN Status = 'Pending' THEN 1 ELSE 0 END) AS Pending FROM lab.SalesOrder GROUP BY CustomerId;

Cancelled satırları gruba katılır ama bu iki ölçüyü artırmaz.