Mikro ERP Satış Raporu SQL Sorgusu: Ürün, Cari ve Dönem Bazlı Analiz
Mikro ERP'de satış raporu nasıl çıkarılır? STOK_HAREKETLERI tablosundan ürün bazlı, cari bazlı ve aylık dönemsel satış raporlarını çıkaran hazır SQL...
Sorun: “Bu Ay Ne Kadar Sattık?”
Yönetim her ay soruyor: “En çok ne sattık? Kim ne aldı? Geçen aya göre nasılız?” Mikro’nun standart raporları var ama özelleştirilmiş analiz istiyorsanız SQL şart.
Hangi Tablo, Hangi Alan?
Satış verileri STOK_HAREKETLERI tablosundadır. Filtre koşulları:
| Filtre | Alan | Değer | Açıklama |
|---|---|---|---|
| Satış çıkışı | sth_tip | 1 | Çıkış hareketi |
| Fatura | sth_cins | 0 | Normal hareket |
| Normal (iade değil) | sth_normal_iade | 0 | İade hariç |
| İptal değil | sth_iptal | 0 | İptal hariç |
Kaynak: STOK_HAREKETLERI · STOKLAR
Ürün Bazlı Satış Raporu
En çok satılan ürünler — miktar ve ciro olarak:
SELECT TOP 50
STH.sth_stok_kod AS [Stok Kodu],
S.sto_isim AS [Ürün Adı],
SUM(STH.sth_miktar) AS [Toplam Miktar],
SUM(STH.sth_tutar) AS [Toplam Ciro],
COUNT(DISTINCT STH.sth_evrakno_seri +
CAST(STH.sth_evrakno_sira AS VARCHAR)) AS [Fatura Sayısı],
COUNT(DISTINCT STH.sth_cari_kodu) AS [Müşteri Sayısı],
ROUND(SUM(STH.sth_tutar) /
NULLIF(SUM(STH.sth_miktar), 0), 2) AS [Ort. Birim Fiyat]
FROM STOK_HAREKETLERI STH WITH (NOLOCK)
INNER JOIN STOKLAR S WITH (NOLOCK) ON STH.sth_stok_kod = S.sto_kod
WHERE STH.sth_tip = 1 -- Çıkış
AND STH.sth_cins = 0 -- Normal
AND STH.sth_normal_iade = 0 -- İade değil
AND STH.sth_iptal = 0
AND STH.sth_tarih >= '2026-01-01'
AND STH.sth_tarih <= '2026-12-31'
GROUP BY STH.sth_stok_kod, S.sto_isim
ORDER BY [Toplam Ciro] DESC;
Müşteri Bazlı Satış Raporu
Hangi müşteri ne kadar alışveriş yaptı:
SELECT TOP 50
STH.sth_cari_kodu AS [Cari Kodu],
C.cari_unvan1 AS [Müşteri],
SUM(STH.sth_tutar) AS [Toplam Ciro],
COUNT(DISTINCT STH.sth_evrakno_seri +
CAST(STH.sth_evrakno_sira AS VARCHAR)) AS [Fatura Sayısı],
COUNT(DISTINCT STH.sth_stok_kod) AS [Ürün Çeşidi],
MIN(STH.sth_tarih) AS [İlk Alım],
MAX(STH.sth_tarih) AS [Son Alım]
FROM STOK_HAREKETLERI STH WITH (NOLOCK)
INNER JOIN CARI_HESAPLAR C WITH (NOLOCK) ON STH.sth_cari_kodu = C.cari_kod
WHERE STH.sth_tip = 1 AND STH.sth_cins = 0
AND STH.sth_normal_iade = 0 AND STH.sth_iptal = 0
AND STH.sth_tarih >= '2026-01-01'
GROUP BY STH.sth_cari_kodu, C.cari_unvan1
ORDER BY [Toplam Ciro] DESC;
Aylık Satış Trendi (Pivot)
Aylara göre satış cirosu:
SELECT
YEAR(sth_tarih) AS [Yıl],
SUM(CASE WHEN MONTH(sth_tarih) = 1 THEN sth_tutar ELSE 0 END) AS [Oca],
SUM(CASE WHEN MONTH(sth_tarih) = 2 THEN sth_tutar ELSE 0 END) AS [Şub],
SUM(CASE WHEN MONTH(sth_tarih) = 3 THEN sth_tutar ELSE 0 END) AS [Mar],
SUM(CASE WHEN MONTH(sth_tarih) = 4 THEN sth_tutar ELSE 0 END) AS [Nis],
SUM(CASE WHEN MONTH(sth_tarih) = 5 THEN sth_tutar ELSE 0 END) AS [May],
SUM(CASE WHEN MONTH(sth_tarih) = 6 THEN sth_tutar ELSE 0 END) AS [Haz],
SUM(CASE WHEN MONTH(sth_tarih) = 7 THEN sth_tutar ELSE 0 END) AS [Tem],
SUM(CASE WHEN MONTH(sth_tarih) = 8 THEN sth_tutar ELSE 0 END) AS [Ağu],
SUM(CASE WHEN MONTH(sth_tarih) = 9 THEN sth_tutar ELSE 0 END) AS [Eyl],
SUM(CASE WHEN MONTH(sth_tarih) = 10 THEN sth_tutar ELSE 0 END) AS [Eki],
SUM(CASE WHEN MONTH(sth_tarih) = 11 THEN sth_tutar ELSE 0 END) AS [Kas],
SUM(CASE WHEN MONTH(sth_tarih) = 12 THEN sth_tutar ELSE 0 END) AS [Ara],
SUM(sth_tutar) AS [Yıl Toplamı]
FROM STOK_HAREKETLERI WITH (NOLOCK)
WHERE sth_tip = 1 AND sth_cins = 0
AND sth_normal_iade = 0 AND sth_iptal = 0
GROUP BY YEAR(sth_tarih)
ORDER BY [Yıl];
Satıcı Performans Raporu
Hangi satıcı ne kadar ciro yaptı:
SELECT
CH.cha_satici_kodu AS [Satıcı Kodu],
C.cari_unvan1 AS [Satıcı Adı],
COUNT(DISTINCT CH.cha_kod) AS [Müşteri Sayısı],
SUM(CH.cha_meblag) AS [Toplam Ciro],
COUNT(DISTINCT CH.cha_evrakno_seri +
CAST(CH.cha_evrakno_sira AS VARCHAR)) AS [Fatura Sayısı]
FROM CARI_HESAP_HAREKETLERI CH WITH (NOLOCK)
LEFT JOIN CARI_HESAPLAR C WITH (NOLOCK) ON CH.cha_satici_kodu = C.cari_kod
WHERE CH.cha_evrak_tip = 63 -- Satış faturası
AND CH.cha_iptal = 0
AND CH.cha_tarihi >= '2026-01-01'
AND CH.cha_satici_kodu <> ''
GROUP BY CH.cha_satici_kodu, C.cari_unvan1
ORDER BY [Toplam Ciro] DESC;
Dikkat Edilecekler
- İade dahil etmeyin:
sth_normal_iade = 0filtresi iade faturalarını hariç tutar. İadeli rapor istiyorsanız ayrı satırda gösterin. - Stok çıkış tipleri:
sth_cins = 0sadece fatura çıkışlarını alır. Fire, sarf, transfer çıkışları dahil değildir. - KDV:
sth_tutarKDV hariç tutardır. KDV dahil ciro için vergi alanlarını ekleyin.
İlgili Yazılar
- Alış-Satış Kâr Analizi — Brüt kâr/zarar
- Son Alış Fiyatı — Maliyet karşılaştırma
- Depo Bazlı Stok Bakiye — Envanter kontrolü
- Cari Ekstre Raporu — Müşteri hesap özeti
Bu rehber Mikro ERP API Docs tablo yapısına dayanarak hazırlanmıştır.