Forum
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
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.
*****************************************************************
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 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]
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 🙁
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 |
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
حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]
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.
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]
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.
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
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.
*****************************************************************
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]
merhaba,
case when ile nasıl yapabilirim acaba. sql koduna çevirebilir misin.
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'
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.
*****************************************************************