Forum

sqlde sorgu(istenme...
 
Bildirimler
Hepsini Temizle

sqlde sorgu(istenmeyen kaydın görüntülenmemesi)

16 Yazılar
3 Üyeler
0 Likes
3,298 Görüntüleme
(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

Merhaba,

aşağıdaki Sql kodumda şunu yapmaya çalışıyorum. ADET kucuk ise BAKIYE den ve sonrakı Kaydın isk='100' ise listeye gelmesin. nasıl yapabilirim. yardımcı olabilirmisiniz.

SELECT STOK_KODU,ADET,BR,STOK_ADI,BAKIYE,KAYITNO,FLOOR(ISK1_ORAN) as isk FROM OMERYAZILIMYUKLEME WHERE RAPOR_KODU4 ='BARTIN' AND CARI_ISIM ='OMER FARUK' order by KAYITNO asc

 

 
Gönderildi : 26/04/2019 15:40

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

SELECT
STOK_KODU
, ADET
, BR
, STOK_ADI
, BAKIYE
, KAYITNO
, FLOOR( ISK1_ORAN ) AS isk
FROM OMERYAZILIMYUKLEME
WHERE RAPOR_KODU4 = 'BARTIN'
AND CARI_ISIM = 'OMER FARUK'
AND ADET < BAKIYE
AND FLOOR( ISK1_ORAN ) <> 100
ORDER BY KAYITNO ASC ;

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 26/04/2019 15:48

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

Merhaba Cevabınız için teşekkür ederim. yalnız şöyle bir sorun var. YUKARDAN AŞAĞIYA 20 TANE KAYIT OLDUĞUNU DÜŞÜNÜN, sql de ( ISK1_ORAN ) <> 100 kodunu yazdığım için ne kadar isk 100 olan varsa listeden siliniyor.

 

Bu ileti 5 yıl önce 3 defa Ömer SEÇKİN tarafından düzenlendi
 
Gönderildi : 26/04/2019 17:19

(@vedatozerr)
Gönderiler: 63
Trusted Member
 
Gönderen: Ömer SEÇKİN

Merhaba Cevabınız için teşekkür ederim. yalnız şöyle bir sorun var. YUKARDAN AŞAĞIYA 20 TANE KAYIT OLDUĞUNU DÜŞÜNÜN, sql de ( ISK1_ORAN ) <> 100 kodunu yazdığım için ne kadar isk 100 olan varsa listeden siliniyor.

 

Merhaba,

Sorgunun tamamına eklediniz mi ?

Adet<Bakiye koşulunu eklemeniz lazım.

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 26/04/2019 17:30

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

MERHABA,

EVET EKLEDİM. YALNIZ ŞÖYLE BİR DURUM VAR. İSK=100 OLAN KISIMI BİR SONRAKİ KAYIT TA. HEMEN ONUN ALTINA DÜŞÜYOR. BİR TÜRLÜ FOTO EKLEYEMEDİM. GÖRSEL OLAYDI. ANLATMAK DAHA KOLAY OLURDU 🙁

 
Gönderildi : 26/04/2019 17:46

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

 

TABLO AŞAĞIDAKİ GİBİDİR.

STOK KODU ADET BR STOK ADI BAKİYE KAYITNO ISK1
460000593 5 KL LUKOIL LUXE 10W40 (SL/CF) 4X4LT 0 1 10
460001618 1 KL LUKOIL GENESIS SPECIAL C3 5W30 4X4LT 128 2 100
460000615 5 KL LUKOIL LUXE SS 5W40 (SL/CF) 4X4LT 5 3 10
460001618 1 KL LUKOIL GENESIS SPECIAL C3 5W30 4X4LT 128 4 100
460001151 10 KL LUKOIL LUXE SS 5W30 (SL/CF) 4X4LT 93 5 10
460001618 2 KL LUKOIL GENESIS SPECIAL C3 5W30 4X4LT 128 6 100
460001555 5 KL LUKOIL LUXE  10W40 (SL/CF) 4X5LT 2 7

10

460001606 1 KL LUKOIL GENESIS SPECIAL C3 5W30 4X5LT 39 8 100
460001618 15 KL LUKOIL GENESIS SPECIAL C3 5W30 4X4LT 128 9 12
460001606 5 KL LUKOIL GENESIS SPECIAL C3 5W30 4X5LT 39 10 12
 
Gönderildi : 26/04/2019 17:48

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Merhaba,

Adet küçük ise Bakiye ve İskonto=100 listeleme yapılmayacak ise Mehmet beyin verdiği cevabı sanal tablo üzerinde gösteriyorum.

Eğer ki istediğiniz bu değil ise örnekle açıklama yapabilir misiniz ?

DECLARE @OMERYAZILIMYUKLEME 
TABLE (STOK_KODU VARCHAR(150),ADET FLOAT,BR VARCHAR(15),
STOK_ADI VARCHAR(150),BAKIYE FLOAT,KAYITNO INT,ISK1_ORAN FLOAT)
INSERT INTO @OMERYAZILIMYUKLEME
SELECT '460000593','5','KL','LUKOIL LUXE 10W40 (SL/CF) 4X4LT','0','1','10' UNION ALL
SELECT '460001618','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','2','100' UNION ALL
SELECT '460000615','5','KL','LUKOIL LUXE SS 5W40 (SL/CF) 4X4LT','5','3','10' UNION ALL
SELECT '460001618','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','4','100' UNION ALL
SELECT '460001151','10','KL','LUKOIL LUXE SS 5W30 (SL/CF) 4X4LT','93','5','10' UNION ALL
SELECT '460001618','2','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','6','100' UNION ALL
SELECT '460001555','5','KL','LUKOIL LUXE 10W40 (SL/CF) 4X5LT','2','7','10' UNION ALL
SELECT '460001606','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X5LT','39','8','100' UNION ALL
SELECT '460001618','15','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','9','12' UNION ALL
SELECT '460001606','5','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X5LT','39','10','12'

SELECT * FROM @OMERYAZILIMYUKLEME
WHERE ADET < BAKIYE
AND FLOOR( ISK1_ORAN ) <> 100
Bu ileti 5 yıl önce 2 defa Vedat Özer tarafından düzenlendi

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 26/04/2019 18:06

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

size şöyle anlatayım.

KN DİKKAT EDERSENİZ YUKARDAN AŞAĞIYA DOĞRU SIRALI GELMİŞ. BUNLAR KAYIT NUMARASINI TEMSİL EDİYOR. 

ŞİMDİ; KN İLK SATIRINDAKİ ÜRÜNÜ TEMSİL EDER. 2. SATIRDAKİ İSE O ÜRÜNÜN HEDİYESİNİ TEMSİL EDİYOR.  EĞER İLK SATIRDAKİ ÜRÜN STOĞUMDA YOK İSE HEDİYE ÜRÜNDE LİSTEYE GELMEMESİ GEREKİYOR.  İŞTE BU DÖNGÜYÜ VEYA KURALI OLUŞTURMAM LAZIM.

 
Gönderildi : 27/04/2019 00:18

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Merhaba,

1 numaralı satır ana ürün, 2 numarası satır ise 1 numaralı satırın hediyesi, haliyle sistem 2,4 -6,8 numaralı satırda aynı bu şekilde devam etmekte midir ? 

Ana ürün ile hediye ürünün ortak bir alanı mevcut mudur ?

Sql Server Sürümü Nedir ?

 

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 27/04/2019 09:23

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

sadece ekranda gördüğüm şekilde tablo var. 

eğer hediyeli ürün ise altındaki satıra hediye yi atıyor değil ise atmıyor.

 
Gönderildi : 27/04/2019 14:41

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

aslında aşağıdaki cümleyi sql e çevirebilsem sorun çözülecek.

 

Kayıt No=1 ise ADET<BAKIYE ise ve KAYITNO= 2 ISKONTO=100 İSE KAYITNO1 VE KAYITNO=2 Listeye gelmesin

 
Gönderildi : 27/04/2019 15:54

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Case When ile yapılabilir bu

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 27/04/2019 15:55

(@vedatozerr)
Gönderiler: 63
Trusted Member
 

Merhaba,

Doğru mu anladım bilmiyorum fakat ,

Anladığım kadarıyla Kayıt numaraları sıralı olarak gitmektedir. 1,2 numaraların aynı zamanda 3,4 -5,6-7,8-9,10 gibi eşleşmeli sanırım. Haliyle üst ve alt satırlı kontrol etmemiz lazım.

DECLARE @OMERYAZILIMYUKLEME 
TABLE (STOK_KODU VARCHAR(150),ADET FLOAT,BR VARCHAR(15),
STOK_ADI VARCHAR(150),BAKIYE FLOAT,KAYITNO INT,ISK1_ORAN FLOAT)
INSERT INTO @OMERYAZILIMYUKLEME
SELECT '460000593','5','KL','LUKOIL LUXE 10W40 (SL/CF) 4X4LT','0','1','10' UNION ALL
SELECT '460001618','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','2','100' UNION ALL
SELECT '460000615','5','KL','LUKOIL LUXE SS 5W40 (SL/CF) 4X4LT','5','3','10' UNION ALL
SELECT '460001618','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','4','100' UNION ALL
SELECT '460001151','10','KL','LUKOIL LUXE SS 5W30 (SL/CF) 4X4LT','93','5','10' UNION ALL
SELECT '460001618','2','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','6','100' UNION ALL
SELECT '460001555','5','KL','LUKOIL LUXE 10W40 (SL/CF) 4X5LT','2','7','10' UNION ALL
SELECT '460001606','1','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X5LT','39','8','100' UNION ALL
SELECT '460001618','15','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X4LT','128','9','12' UNION ALL
SELECT '460001606','5','KL','LUKOIL GENESIS SPECIAL C3 5W30 4X5LT','39','10','12'

;WITH
ANAURUN AS (
SELECT *,ROW_NUMBER() OVER(ORDER BY KAYITNO) SIRANO
FROM @OMERYAZILIMYUKLEME
WHERE KAYITNO % 2 = 1),

HEDIYEURUN AS (
SELECT *,ROW_NUMBER() OVER(ORDER BY KAYITNO) SIRANO
FROM @OMERYAZILIMYUKLEME
WHERE KAYITNO % 2 = 0),

BIRLESIM AS (
SELECT
A.STOK_KODU [Ana Ürün],
H.STOK_KODU [Hediye Ürün],
A.KAYITNO [Ana Ürün Kayıt No],
A.ADET [Ana Ürün Adet],
A.BAKIYE [Ana Ürün Bakiye],
H.KAYITNO [Hediye Ürün Kayıt No],
H.ADET [Hediye Adet],
H.BAKIYE [Hediye Bakiye],
H.ISK1_ORAN [Hediye İskonto]
FROM HEDIYEURUN H INNER JOIN ANAURUN A ON H.SIRANO=A.SIRANO
WHERE A.ADET<A.BAKIYE AND H.ISK1_ORAN=100
)

SELECT * FROM @OMERYAZILIMYUKLEME
WHERE KAYITNO NOT IN (SELECT [Ana Ürün Kayıt No] FROM BIRLESIM )
AND KAYITNO NOT IN (SELECT [Hediye Ürün Kayıt No] FROM BIRLESIM )

 

 

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 27/04/2019 16:18

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

merhaba,

 

case when ile nasıl yapabilirim acaba. sql koduna çevirebilir misin.

 
Gönderildi : 28/04/2019 22:00

(@omerseckin)
Gönderiler: 56
Estimable Member
Konu başlatıcı
 

Merhaba, 

aşağıdaki kod ile sorunumu çözebilirim. yalnız  WHEN KN='1' AND KL<bakiyesube OR KN='2' AND ISK1_ORAN='100' THEN 'NEGATİF' komutuyla negatif gelmesi gerekiyor fakat bir türlü olmuyor. sizde bakabilir misiniz.

select barkod1,KN,ISK1_ORAN,plasiyer,Cariisim,KL,br,Stokkodu,Bakiyesube ,ilce,sevkno,
CASE
WHEN KN='1' AND KL<bakiyesube THEN 'POZİTİF'
WHEN KN='2' AND KL<bakiyesube THEN 'POZİTİF'
WHEN KN='1' AND KL<bakiyesube OR KN='2' AND ISK1_ORAN='100' THEN 'NEGATİF'
ELSE 'NEGATİF'

END

from sevkiyatliste_table2 where sevkno ='YTEST3' and cariisim='omersoft'

 
Gönderildi : 29/04/2019 00:55

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba,

 İlk when de ISK1_ORAN ile ilgili bir eşitlik ya da eşitsizlik olmadığı için istediğin şekilde veri gelmeyecektir. Aşağıdaki gibi deneyebilir misin?

 

SELECT
barkod1
, KN
, ISK1_ORAN
, plasiyer
, Cariisim
, KL
, br
, Stokkodu
, Bakiyesube
, ilce
, sevkno
, CASE WHEN KN IN
( '1', '2' )
AND KL < bakiyesube
AND ISK1_ORAN <> 100
THEN 'POZİTİF'
WHEN KN IN
( '1', '2' )
AND KL < bakiyesube
AND ISK1_ORAN = 100
THEN 'NEGATİF'
END
FROM sevkiyatliste_table2
WHERE sevkno = 'YTEST3'
AND cariisim = 'omersoft' ;

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 29/04/2019 09:47

Paylaş: