SİPARİŞ GÖRÜNTÜLEME

Gönderen Konu: SİPARİŞ GÖRÜNTÜLEME  (Okunma sayısı 2443 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
SİPARİŞ GÖRÜNTÜLEME
« : 28.03.2012, 12:47 »
Arkadaşlar selam.
bekleyen siparişleri çeken bir sorgu yazdım. Ama müşterinin birden fazla kalem siparişi olduğunda her bir kalem için ayrı satır döndürüyor. Oysa ki ben her bir siparişe tek bir satır döndürüp, ürün kalemlerini aynı satırda yan yana görmek istiyorum.

çok küçük bir püf noktası var ama çözemedim... sorgum şöyle:

SELECT
S.FICHENO AS 'SİP.NO', S.DATE_ AS 'SİP.TARİHİ', C.CODE AS 'C/H KODU', C.DEFINITION_ AS 'C/H ÜNVANI', C.CITY AS 'C/H ŞEHRİ',
S.NETTOTAL AS 'SİP.TUTARI',
(CASE WHEN SD.STOCKREF='1' THEN SD.AMOUNT END) AS 'ÜRÜN 1',
(CASE WHEN SD.STOCKREF='2' THEN SD.AMOUNT END) AS 'ÜRÜN 2'

FROM LG_001_07_ORFICHE S
LEFT JOIN LG_001_CLCARD C ON C.LOGICALREF=S.CLIENTREF
LEFT JOIN LG_001_07_ORFLINE SD ON S.LOGICALREF=SD.ORDFICHEREF

GROUP BY S.FICHENO, C.CODE, C.DEFINITION_, C.CITY, S.DATE_, S.NETTOTAL, SD.STOCKREF, SD.AMOUNT
ORDER BY S.FICHENO

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #1 : 28.03.2012, 14:09 »
Merhaba,

group by ı incelediğinde fiş numarasına göre grupla demişsin ki bu zaten her fiş için birr satır olmasını sağlıyor :)
grou by da hatan var
senin istediğin rapor şu şekilde olur ancak



SELECT
 C.CODE AS 'C/H KODU', C.DEFINITION_ AS 'C/H ÜNVANI', C.CITY AS 'C/H ŞEHRİ',
sum(S.NETTOTAL) AS 'SİP.TUTARI',
sum(CASE WHEN SD.STOCKREF=1 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 1',
sum(CASE WHEN SD.STOCKREF=2 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 2'
FROM LG_112_01_ORFICHE S
LEFT JOIN LG_112_CLCARD C ON C.LOGICALREF=S.CLIENTREF
LEFT JOIN LG_112_01_ORFLINE SD ON S.LOGICALREF=SD.ORDFICHEREF
where SD.STOCKREF IN (1,2)         -- BURASI DİĞER ÜRÜNLERİN GELMESİNİ ENGELLER YUKARIDA ÜRÜN 1 VE ÜRÜN 2 İÇİN BUNLARI SEÇMİŞSİN
GROUP BY C.CODE, C.DEFINITION_, C.CITY,   SD.STOCKREF


Kolay gelsin.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #2 : 28.03.2012, 14:20 »
üstad malesef. yine aynı şekilde birkaç satır döndürüyor...

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #3 : 28.03.2012, 14:52 »
Burada 2 satır döndermesi gerekiyor çünkü aynı satır döndermesini gerektiren tek şey stockref onuda kaldırırsak dönmez tek gelir.

deneyelim



SELECT
 C.CODE AS 'C/H KODU', C.DEFINITION_ AS 'C/H ÜNVANI', C.CITY AS 'C/H ŞEHRİ',
sum(S.NETTOTAL) AS 'SİP.TUTARI',
sum(CASE WHEN SD.STOCKREF=1 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 1',
sum(CASE WHEN SD.STOCKREF=2 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 2'
FROM LG_112_01_ORFICHE S
LEFT JOIN LG_112_CLCARD C ON C.LOGICALREF=S.CLIENTREF
LEFT JOIN LG_112_01_ORFLINE SD ON S.LOGICALREF=SD.ORDFICHEREF
--where SD.STOCKREF IN (1,2)         -- BURASI DİĞER ÜRÜNLERİN GELMESİNİ ENGELLER YUKARIDA ÜRÜN 1 VE ÜRÜN 2 İÇİN BUNLARI SEÇMİŞSİN
GROUP BY C.CODE, C.DEFINITION_, C.CITY



evet denendi ve tek satır gelmesi gerçekleştirildi :)
eğer hala tek satır gelmiyor ise (ama gelme ihtimali yok) tekrar bakalım

Kolay gelsin.

Kolay gelsin

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #4 : 28.03.2012, 19:46 »
ufak bir düzeltmeden sonra çalıştı.
bir iki de ekleme yaptım, belki başkalarına da yarar.
bu arada mon senyör, teşekkür ederim ilginize...

SELECT
S.FICHENO AS 'SİPARİŞ NO.',
CONVERT(VARCHAR(11),S.DATE_,104) AS 'SİPARİŞ TARİHİ',
CONVERT(VARCHAR(11), SD.DUEDATE, 104) AS 'TESLİM TARİHİ',
(CASE WHEN (DATEDIFF(DAY, SD.DUEDATE, GETDATE()) >0) THEN (DATEDIFF(DAY, SD.DUEDATE, GETDATE())) ELSE NULL END) AS 'GECİKEN GÜN',
C.CODE AS 'C/H KODU', C.DEFINITION_ AS 'C/H ÜNVANI', C.CITY AS 'C/H ŞEHRİ',
S.NETTOTAL AS 'SİPARİŞ TUTARI',
SUM(CASE WHEN SD.STOCKREF=1 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 1',
SUM(CASE WHEN SD.STOCKREF=2 THEN SD.AMOUNT ELSE 0 END) AS 'ÜRÜN 2'

FROM
LG_001_07_ORFICHE S
LEFT JOIN LG_001_CLCARD C ON C.LOGICALREF=S.CLIENTREF
LEFT JOIN LG_001_07_ORFLINE SD ON S.LOGICALREF=SD.ORDFICHEREF
GROUP BY C.CODE, C.DEFINITION_, C.CITY, S.FICHENO, S.DATE_, SD.DUEDATE, S.NETTOTAL
ORDER BY SD.DUEDATE

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #5 : 29.03.2012, 09:36 »
bu arada, bir siparişin faturalanıp faturalanmadığı bilgisi nerede tutuluyor?
iki ayrı sipariş açıp birini faturaladım. ne orfiche, ne de orfline tablosunda arada bir fark göremedim.
ama programdan faturalanmış siparişi çıkart deyince "tamamı sevkedilen sip.çıkartılamaz" deniyor.

Çevrimdışı tarkankurt

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #6 : 29.03.2012, 09:49 »
stline ile orfiche bağlaman lazım.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #7 : 29.03.2012, 10:00 »
bağlı zaten. yukarıdaki sorgu çalışır mı başka türlü?
ama hangi tablo, hangi alan?

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #8 : 29.03.2012, 13:52 »
Merhaba,

Stline, orfline bu ikisinde tutuyor. Program şunu yapıyor. orfline logicalrefini stline de aratıyor eğer varsa bu hareket görmüş demek oluyor. bu yüzdende çıkarttırmıyor yani orfline ve stline ı dinamik olarak kontrol ediyor.


Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #9 : 29.03.2012, 14:03 »
orfline tablosundaki bir alanla yapmak yerine niye böyle kulaklarını tersten gösterirlerse...
peki kısmen mi tamamen mi faturalı onu nasıl takip ediyor?

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #10 : 30.03.2012, 08:53 »
Günaydın,

Buda Orfline tablosunda var diye hatırlıyorum. sipariş miktarı, ve sevk edilen miktar bunlar var
birbirinden çıkarınca kalan miktarda çıkıyor diye hatırlıyorum.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #11 : 31.03.2012, 08:29 »
SELECT
S.DATE_ AS 'SİP.TAR.',
SD.DUEDATE AS 'TES.TAR.',
(CASE WHEN (DATEDIFF(DAY, SD.DUEDATE, GETDATE()) >0) THEN (DATEDIFF(DAY, SD.DUEDATE, GETDATE())) ELSE NULL END) AS 'GECİKME',
C.DEFINITION_ AS 'ÜNV.', C.TOWN AS 'RUT', C.CITY AS 'İLİ',
S.NETTOTAL AS 'TL.TOP.',
SUM(SD.AMOUNT*B.GROSSWEIGHT) AS 'KG.TOP.',
S.GENEXP1 AS 'NOT',
SUM(CASE WHEN SD.STOCKREF=1 THEN SD.AMOUNT ELSE NULL END) AS 'ÜRÜN 1',
SUM(CASE WHEN SD.STOCKREF=2 THEN SD.AMOUNT ELSE NULL END) AS 'ÜRÜN 2'

FROM
LG_001_07_ORFICHE S
LEFT JOIN LG_001_CLCARD C ON C.LOGICALREF=S.CLIENTREF
LEFT JOIN LG_001_07_ORFLINE SD ON S.LOGICALREF=SD.ORDFICHEREF
LEFT JOIN LG_001_ITEMS M ON SD.STOCKREF=M.LOGICALREF
LEFT JOIN LG_001_ITMUNITA B ON M.LOGICALREF=B.ITEMREF
LEFT JOIN LG_001_07_STLINE ST ON S.LOGICALREF=ST.ORDFICHEREF

WHERE
(ST.ORDFICHEREF IS NULL)   -- FATURALANMAMIŞ SİPARİŞLER İÇİN
AND (SD.LINETYPE <> '2')   -- SATIR İNDİRİMİ OLAN SATIRLARI ATLAMAK İÇİN
AND (DUEDATE <= GETDATE() )   -- TESLİM TARİHİ BUGÜN VE ÖNCESİ
GROUP BY C.CODE, C.DEFINITION_, C.CITY, C.TOWN, S.FICHENO, S.DATE_, SD.DUEDATE, S.NETTOTAL, S.GENEXP1
ORDER BY SD.DUEDATE, İLİ, [RUT]

------------------------------------------------------------------
yukarıdaki sorgu ile bekleyen siparişleri artık çekebiliyorum, buraya kadar sorun yok.
ancak faturalanan siparişler için (ST.ORDFICHEREF IS NOT NULL) diyince sonuçlar sapıtıyor.
daha önce 50 koli olan bir sipariş, faturalandıktan sonra 150 gözüküyor,
bir başkası 25 iken 175 oluyor vs. yani önceki rakamları sabit bir sayı ile çarpıyor, ama neye göre bulamadım.

faturalanan siparişin hem orfline hem de stline tablosuna baktım, değerler normal...

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #12 : 31.03.2012, 13:28 »
Merhaba,

O alanın yalnızca null olduğuna eminmisin ben öyle değil gibi hatırlıyorum
(ST.ORDFICHEREF IS NULL) yerine

ISNULL (ST.ORDFICHEREF,0)=0 DESEN

(ST.ORDFICHEREF IS NULL)   -- FATURALANMAMIŞ SİPARİŞLER İÇİN demişsin ama bu yanlış olmuş faturalanmamışlar için stfiche de BILLED bu alana bakman gerekiyor.

bu yazmış olduğun filtre siperiş bağlantısı olmayanları verecek sana
« Son Düzenleme: 31.03.2012, 13:30 Gönderen: Monsieur® »

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #13 : 31.03.2012, 14:05 »
sorun bu filtrede değil.
çünkü:

bu filtreyi tamamen kaldırdığımda doğal olarak tüm siparişler listeleniyor.
bir siparişi, faturalanmadan önce doğru şekilde döndürüyorken, aynı sipariş aynı raporda faturalandıktan sonra miktarlar sapıtıyor...

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: SİPARİŞ GÖRÜNTÜLEME
« Yanıtla #14 : 02.04.2012, 17:04 »
çözüm şu şekilde arkadaşlar:

WHERE
(ST.ORDTRANSREF=SD.LOGICALREF) AND
(ST.BILLED=1) AND
(SD.LINETYPE <> '2')