Anarchosa adlı üyeden alıntı

CREATE DEFINER=`root`@`%` PROCEDURE `AylikAlisToplami`(Qilktarih datetime,Qsontarih datetime,QStok varchar(8000),QGrup varchar(8000),QMarka varchar(8000),QCari varchar(8000),QCGrup varchar (8000),QLokasyon varchar(8000))

BEGIN

SET lc_time_names='tr_TR';

Select date_format(a.tarih,'%M-%Y') Aylar,sum(d.tutar_ara*d.doviz_kur) AlisTutari,sum(case when a.belge_tip in (3,7) then d.tutar_ara*d.doviz_kur else 0 end) IadeTutari, sum((d.iskontosuz_tutar-d.tutar_satir)*d.doviz_kur) IndirimTutari, sum(d.kdv_tutar*d.doviz_kur) KdvTutari, count(DISTINCT a.id) IslemSayisi, EXTRACT(YEAR FROM a.tarih) Yıl, EXTRACT(MONTH FROM a.tarih) Ay

From belge a 

Join belge_detay d on (a.id = d.belge_id)

Join cari c on (a.cari_id = c.id)

Join cari_grup cg on (cg.id=c.cari_grup_id)

Join tnm_kullanici p on (a.tnm_kullanici_id = p.id)

Join tnm_lokasyon l on (a.tnm_lokasyon_id = l.id)

Join stok s on (d.stok_id = s.id)

Join stok_grup sg on (sg.id=s.stok_grup_id)

join tip_belge tb on (tb.id=a.belge_tip)

Where tb.tip=1

and (d.tarih BETWEEN Qilktarih and QSonTarih)

and ('' IN (QStok) OR  FIND_IN_SET(s.id,QStok))

and ('' IN (QGrup) OR  FIND_IN_SET(sg.id,QGrup))

and ('' IN (QMarka) OR  FIND_IN_SET(s.stok_marka_id,QMarka))

and ('' IN (QCari) OR  FIND_IN_SET(c.id,QCari))

and ('' IN (QCGrup) OR  FIND_IN_SET(c.cari_grup_id,QCGrup))

and ('' IN (QLokasyon) OR  FIND_IN_SET(d.tnm_lokasyon_id,QLokasyon))

Group By date_format(a.tarih,'%M-%Y'), EXTRACT(YEAR FROM a.tarih), EXTRACT(MONTH FROM a.tarih)

Order By 6 Asc, 7 Asc,Ay;

 

END

 

Bunun gibi örnek kodlarım mevcut, MSSQL nasıl çevirebilrim mantığı nasıldır yardımcı olabilirmisiniz?

Merhaba

Belirli farklar olsa da genel olarak sorgular aynıdır.

Bu gönderdiğiniz MySQL kodunun MSSQL karşılığı aşağıdaki gibidir:

 

Select date_format(a.tarih,'-') Aylar,sum(d.tutar_ara*d.doviz_kur) AlisTutari,sum(case when a.belge_tip in (3,7) then d.tutar_ara*d.doviz_kur else 0 end) IadeTutari, sum((d.iskontosuz_tutar-d.tutar_satir)*d.doviz_kur) IndirimTutari, sum(d.kdv_tutar*d.doviz_kur) KdvTutari, count(DISTINCT a.id) IslemSayisi, YEAR(a.tarih) Yıl, MONTH(a.tarih) Ay

 

From belge a 

 

Join belge_detay d on (a.id = d.belge_id)

Join cari c on (a.cari_id = c.id)

Join cari_grup cg on (cg.id=c.cari_grup_id)

Join tnm_kullanici p on (a.tnm_kullanici_id = p.id)

Join tnm_lokasyon l on (a.tnm_lokasyon_id = l.id)

Join stok s on (d.stok_id = s.id)

Join stok_grup sg on (sg.id=s.stok_grup_id)

join tip_belge tb on (tb.id=a.belge_tip)

 

Where tb.tip=1

 

and (d.tarih BETWEEN @Qilktarih and @Qsontarih)

and ('' IN (@QStok) OR  dbo.FIND_IN_SET(s.id,@QStok))

and ('' IN (@QGrup) OR  dbo.FIND_IN_SET(sg.id,@QGrup))

and ('' IN (@QMarka) OR  dbo.FIND_IN_SET(s.stok_marka_id,@QMarka))

and ('' IN (@QCari) OR  dbo.FIND_IN_SET(c.id,@QCari))

and ('' IN (@QCGrup) OR  dbo.FIND_IN_SET(c.cari_grup_id,@QCGrup))

and ('' IN (@QLokasyon) OR  dbo.FIND_IN_SET(d.tnm_lokasyon_id,@QLokasyon))

 

Group By date_format(a.tarih,'-'), YEAR(a.tarih), MONTH(a.tarih)

 

Order By 6 Asc, 7 Asc,Ay;

 

END;

GO