HSPKOD Fisno aciklama Borc Alacak
600.10 1 A Ltd. Null 6500
391.10 1 A Ltd. Null 1000
100.10 1 A Ltd. 7500 Null
600.10 1 A Ltd. Null 6500
391.10 1 A Ltd. Null 1000
120.10 1 A Ltd. 7500 Null
600.10 2 B Ltd. Null 6700
391.10 2 B Ltd. Null 1200
100.10 2 B Ltd. 7900 Null
Önce derdimi muhasebe diliyle anlatayım: genel muhasebeyi bilenler bilir. Bankadan geçmesi gereken devletin açıkladığı "7000" TL sınırını aşan işlemleri yakalamaya çalışıyorum. Elimde üstteki gibi örnek bir tablo var.
Bu tabloda bankadan geçmesi gerekirken kasadan ödenmiş 2 fatura görüyorum. A Ltd. ve B Ltd. yapılan satışlardan "100.10" kapatılmış iki kayıt vergi cezası gerektiriyor. (Cezası Kanuna göre 2 x 1300= 2600 TL) Şimdi binlerce kayıt içinden bu kayıtları SQL sorgusu ile yakalamak istiyorum.
Şimdide yazılımcı arkadaşların diliyle yazmaya çalışayım: "Borc">7000 büyük olan "HSPKOD" 100% başlayalar ile "Alacak">6000 büyük olan "HSPKOD" 600% ile başlayalardan "Fisno" ve "aciklama" ları aynı olanların listelenmesini istiyorum.
Aşağıdaki gibi bu şartlara uyan HSPKOD "100%" olanlar listelense yeterli veya bunu yakalayabilecek bir sonuç...
HSPKOD Fisno aciklama Borc Alacak
100.10 1 A Ltd. 7500 Null
100.10 2 B Ltd. 7900 Null
2 günlük araştırma sonucunda üstteki sonuca yaklaşabilmiş değilim.

create table table1 (HSPKOD varchar(30), Fisno int, aciklama varchar(30), Borc varchar(30), Alacak varchar(30))
INSERT INTO table1 (HSPKOD, Fisno, aciklama, Borc, Alacak)
values
(600.10,1,'A Ltd.',Null,6500),
(391.10,1,'A Ltd.',Null,1000),
(100.10,1,'A Ltd.',7500,Null),
(600.10,1,'A Ltd.',Null,6500),
(391.10,1,'A Ltd.',Null,1000),
(120.10,1,'A Ltd.',7500,Null),
(600.10,2,'B Ltd.',Null,6700),
(391.10,2,'B Ltd.',Null,1200),
(100.10,2,'B Ltd.',7900,Null);
GROUP BY HAVING COUNT(*)>1 ile ilgili birşeyler buldum ama onuda başaramadım

Select Fisno, aciklama, COUNT(*) from table1
where (HSPKOD LIKE '1%' and Borc >120) or
(HSPKOD LIKE '6%' and Alacak >100)
GROUP BY Fisno, aciklama having COUNT(*) > 1