Selamlar Arkadaşlar,
HSPKOD Fisno aciklama Borc Alacak
600.10 1 A Ltd. 6500
391.10 1 A Ltd. 1000
100.10 1 A Ltd. 7500
600.10 1 A Ltd. 6500
391.10 1 A Ltd. 1000
120.10 1 A Ltd. 7500
254.10 2 B Ltd. 6700
391.10 2 B Ltd. 1200
100.10 2 B Ltd. 7900
Ö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
100.10 1 A Ltd. 7500
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),
(254.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 >7000) or
(HSPKOD LIKE '6%' and Alacak >6000)
GROUP BY Fisno, aciklama having COUNT(*) > 1
HSPKOD Fisno aciklama Borc Alacak
600.10 1 A Ltd. 6500
391.10 1 A Ltd. 1000
100.10 1 A Ltd. 7500
600.10 1 A Ltd. 6500
391.10 1 A Ltd. 1000
120.10 1 A Ltd. 7500
254.10 2 B Ltd. 6700
391.10 2 B Ltd. 1200
100.10 2 B Ltd. 7900
Ö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
100.10 1 A Ltd. 7500
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),
(254.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 >7000) or
(HSPKOD LIKE '6%' and Alacak >6000)
GROUP BY Fisno, aciklama having COUNT(*) > 1
Son düzenleme: