select ederken farklı bir karşılaştırma sonucu süzme
select ederken farklı bir karşılaştırma sonucu süzme
Arkadaşlar, sa
Stokhareket tablomdan bir bilgi çekmem lazım,
Yarımamül ve mamül girişlerini karşılaştıracağım
bunun için ancak fiş numarasından yolaçıkabilirim şu an başka bir alternatifim yok.
YM li girişler - 00000000YM62116- şeklinde ki bir numara ile giriliyor
ve bu numaranın "YM"leri çıkarılarak -000000000062116- olarak çıkışı yapılıyor.
Benim istediğim kalan bu YM li stok hareketi;
00000000YM62116 -- Giriş
000000000062116 -- Çıkış
00000000YM62119 -- Giriş
00000000YM62120 -- Giriş
000000000062120 --Çıkış
Burda 00000000YM62119 -- Giriş bu kaydın çıkmadığını görüyorum Bunu sizce nasıl select edebilirim.
Tekrar edeyim başka bir alternatifim yok giriş işlem kaydına sonra dan çıkışı yapıldı gibi bir değer giremiyorum.(vt bana ait değil)
Teşekkürler
Stokhareket tablomdan bir bilgi çekmem lazım,
Yarımamül ve mamül girişlerini karşılaştıracağım
bunun için ancak fiş numarasından yolaçıkabilirim şu an başka bir alternatifim yok.
YM li girişler - 00000000YM62116- şeklinde ki bir numara ile giriliyor
ve bu numaranın "YM"leri çıkarılarak -000000000062116- olarak çıkışı yapılıyor.
Benim istediğim kalan bu YM li stok hareketi;
00000000YM62116 -- Giriş
000000000062116 -- Çıkış
00000000YM62119 -- Giriş
00000000YM62120 -- Giriş
000000000062120 --Çıkış
Burda 00000000YM62119 -- Giriş bu kaydın çıkmadığını görüyorum Bunu sizce nasıl select edebilirim.
Tekrar edeyim başka bir alternatifim yok giriş işlem kaydına sonra dan çıkışı yapıldı gibi bir değer giremiyorum.(vt bana ait değil)
Teşekkürler
Bir kelimenin anlamını öğretsen bile yeter..
Kod: Tümünü seç
SELECT COPY(11,5) AS HAREKETKODU,
CASE WHEN COPY(9,2)='YM' THEN GIRIS ELSE CIKIS END AS HAREKETTIPI
FROM STOKHAREKET
ORDER BY HAREKETKODU
bu kodla 'giriş' ve 'çıkış' etiketlerini kayıdın yanına ekler. Siz bu sorgu sonucu dönen sonuç kümesiyle istediğiniz herşeyi yapabilirsiniz.00000000YM62116 -- Giriş
000000000062116 -- Çıkış
00000000YM62119 -- Giriş
00000000YM62120 -- Giriş
000000000062120 --Çıkış
siz çıkışı yapılmamış girişleri mi görmek istiyorsunuz?
sadece çıkışı yapılmamışları istiyorum .
fakat bu sorguda çıkmış olduğunu nasıl yakaladın anlayamadım doğrusu
00000000YM62116 -- Giriş bunun yanına Giriş yazması bir şeyi ifade etmiyor bu zaten biliniyor bu formdan 000000000062116 şeklinde olan varmı diye ayrıca bakması lazım.
tablom için bir örnek vereyim sorguyu oluşturabilirsen bir deneyim
stokkodu, fisno,tarih, g_c, miktar,........................
xxx, 0000000000YM62116, G, 01.01.2007,150
xxx, 00000000000062116, C, 02.01.2007,150
xxx, 0000000000YM62117, G, 02.01.2007,150
xxx, 0000000000YM62118, G, 02.01.2007,400
xxx, 0000000000YM62119, G, 03.01.2007,350
xxx, 00000000000062118, C, 04.01.2007,400
bu kayıtlara göre
xxx, 0000000000YM62117, G, 02.01.2007,150
xxx, 0000000000YM62119, G, 03.01.2007,350
bu iki kaydı listelemem lazım.
fakat bu sorguda çıkmış olduğunu nasıl yakaladın anlayamadım doğrusu
00000000YM62116 -- Giriş bunun yanına Giriş yazması bir şeyi ifade etmiyor bu zaten biliniyor bu formdan 000000000062116 şeklinde olan varmı diye ayrıca bakması lazım.
tablom için bir örnek vereyim sorguyu oluşturabilirsen bir deneyim
stokkodu, fisno,tarih, g_c, miktar,........................
xxx, 0000000000YM62116, G, 01.01.2007,150
xxx, 00000000000062116, C, 02.01.2007,150
xxx, 0000000000YM62117, G, 02.01.2007,150
xxx, 0000000000YM62118, G, 02.01.2007,400
xxx, 0000000000YM62119, G, 03.01.2007,350
xxx, 00000000000062118, C, 04.01.2007,400
bu kayıtlara göre
xxx, 0000000000YM62117, G, 02.01.2007,150
xxx, 0000000000YM62119, G, 03.01.2007,350
bu iki kaydı listelemem lazım.
Bir kelimenin anlamını öğretsen bile yeter..
buradan bir katikulli ileSELECT COPY(13,5) AS HAREKETKODU,
CASE WHEN COPY(11,2)='YM' THEN GIRIS ELSE CIKIS END AS HAREKETTIPI
FROM STOKHAREKET
ORDER BY HAREKETKODU
bu istediğini verir...select hareketkodu,count(*)
(
SELECT COPY(13,5) AS HAREKETKODU,
CASE WHEN COPY(11,2)='YM' THEN GIRIS ELSE CIKIS END AS HAREKETTIPI
FROM STOKHAREKET
ORDER BY HAREKETKODU) as tmp
GROUP BY hareketkodu
HAVING count(*)=1
Alan değerleri tamamen verdiğin örnekteki gibi ise fazla uğraşmadan direk ISNUMERIC fonksiyonu ile istediğini yapabilirsin. Örnek:
Bu fonksiyon sayısal değerler için 1, sayısal olmayanlar için 0 değeri döndürüyor. Giriş-Çıkış ayrımını buradan yapabilirsin.
Kod: Tümünü seç
SELECT * FROM STOK WHERE ISNUMERIC(STOK_KODU) = 1
copy için bu hatayı alıyorum,
MSSQL2005 kullanıyorum.
Kod: Tümünü seç
'COPY' is not a recognized built-in function name.
Bir kelimenin anlamını öğretsen bile yeter..
substring kullanarak denedim.
fisnumarasını sondan 5 hanelerini ayırıp, saydırıp sonrada =1 olanlar diye ama group by istiyo fisnoya böyle oluncada her fişnoyu tek tek döküyor ve her kayıt 1 dönüyor, tüm fişler geliyor.
pöfffff
fisnumarasını sondan 5 hanelerini ayırıp, saydırıp sonrada =1 olanlar diye ama group by istiyo fisnoya böyle oluncada her fişnoyu tek tek döküyor ve her kayıt 1 dönüyor, tüm fişler geliyor.
pöfffff
Kod: Tümünü seç
select stok_kodu, SUBSTRING(fisno,11,5),
count(SUBSTRING(fisno,11,5))
FROM stokhareket
GROUP BY stok_kodu,fisno
HAVING count(SUBSTRING(fisno,11,5))=1
order by SUBSTRING(fisno,11,5)
Bir kelimenin anlamını öğretsen bile yeter..
Şöyle birşey düşündüm: Giriş hareketlerinde fişnumarasında YM geçen yere 00 koyarak yeni fiş numarası oluştur bu fiş numaraları çıkış olanların içinde olmayanları getir.
Aşağıdaki kodla 0000000000YM62117 --> 00000000000062117
yapılır.
SUBSTRING(fisno,1,PATINDEX('%YM%',fisno)-1)+'00'+SUBSTRING(fisno,PATINDEX('%YM%',fisno)+2,LEN(fisno))
SUBSTRING(fisno,1,PATINDEX('%YM%',fisno)-1): fiş numarasının baş kısmını YM bulunan yere kadar al
+'00': YM geçen yere 00 ekle
+SUBSTRING(fisno,PATINDEX('%YM%',fisno)+2,LEN(fisno)): fiş numarasının YM den sonraki kısmını sonuna kadar al
Kod: Tümünü seç
SELECT *
FROM HAREKET
WHERE SUBSTRING(fisno,1,PATINDEX('%YM%',fisno)-1)+'00'+SUBSTRING(fisno,PATINDEX('%YM%',fisno)+2,LEN(fisno))
NOT IN (SELECT fisno FROM HAREKET WHERE G_C='C')
AND G_C = 'G'
yapılır.
SUBSTRING(fisno,1,PATINDEX('%YM%',fisno)-1)+'00'+SUBSTRING(fisno,PATINDEX('%YM%',fisno)+2,LEN(fisno))
SUBSTRING(fisno,1,PATINDEX('%YM%',fisno)-1): fiş numarasının baş kısmını YM bulunan yere kadar al
+'00': YM geçen yere 00 ekle
+SUBSTRING(fisno,PATINDEX('%YM%',fisno)+2,LEN(fisno)): fiş numarasının YM den sonraki kısmını sonuna kadar al
İlgin için Teşekkürler,
fakat aldığım hata mesaj aşağıda
Kodu aynen denedim
fakat aldığım hata mesaj aşağıda
Kod: Tümünü seç
Invalid length parameter passed to the SUBSTRING function.
Bir kelimenin anlamını öğretsen bile yeter..