Sql Sorgusunda ki problem

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Tam nasıl kullandığınızı bir örnekle açıklar mısınız? 2005 helpine falan da baktım bulamadım. Zira CURRENT_TIMESTAMP var bildiğim sadece.

Belki siz veya başkası özel olarak tanımlamışsınızdır (user defined type).

İyi çalışmalar.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

SELECT TBLSTHAR.stok_kodu,
   SUM(case TBLSTHAR.STHAR_gckod when 'G' then                                      
                        TBLSTHAR.STHAR_GCmik else 
                        -1 * TBLSTHAR.STHAR_GCmik 
   END) AS TOPLAM
   ,SUM(CASE TBLSTHAR.STHAR_gckod when 'G' then  
                        TBLSTHAR.STHAR_GCmik else 
                        -1 * TBLSTHAR.STHAR_GCmik 
     END) AS TOPLAM2
FROM tblsthar
WHERE TBLSTHAR.DEPO_KODU=11 AND
tblsthar.sthar_TARIH < GETDATE()
GROUP BY TBLSTHAR.stok_kodu,TBLSTHAR.DEPO_KODU,tblsthar.sthar_tarih
Eğer aynı tablo içindeki alanları case when şartına bağlı olarak sorgu oluşturacaksan ayrıyeten select demiyorsun. İç sorguda select başkar tablolarla ilişkilendirirken kullanılıyor. Yukarda senin kodunu düzenledim çalışması gerekiyor ama gözümden kaçmış birşey de olabilir. Deneyip sonucu bildirirsen sevinirim.
En son naile tarafından 29 Kas 2006 06:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Hakan bey bende şu şekilde geliyor

Resim

Bu şekilde dener misiniz? Sizde ne hatası veriyor?
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Hocam sağolun. Ben CURRENT_TIMESTAMP gibi direk kullanmaya çalışmıştım. Ancak helpinde hiçbirşey bulamadım. Bu şekil kullanımı da ilk defa görüyorum. Bu ANSI dışında bir kullanım galiba. Ben sadece DATE bölümünü almak için bir sürü şey yapıyordum.

İyi çalışmalar.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

SELECT TBLSTHAR.stok_kodu, 
(SELECT sum(case TBLSTHAR.STHAR_gckod when 'G' then TBLSTHAR.STHAR_GCmik else -1 * TBLSTHAR.STHAR_GCmik end)A 
 where TBLSTHAR.DEPO_KODU=11 AND 
 tblsthar.sthar_TARIH < (GETDATE()-1) ) AS TOPLAM , 
(SELECT sum(case TBLSTHAR.STHAR_gckod when 'G' then TBLSTHAR.STHAR_GCmik else -1 * TBLSTHAR.STHAR_GCmik end)B 
 where TBLSTHAR.DEPO_KODU=11 AND 
 tblsthar.sthar_TARIH < GETDATE())AS TOPLAM2 
from tblsthar 
group by TBLSTHAR.stok_kodu,TBLSTHAR.DEPO_KODU,tblsthar.sthar_tarih
Parantez hatası verdi senin kod.
yalnız dikkat ben hem dünü hemde bugünü ayrı ayrı listelemeye çalışıyorum :) sen tarih kısıtını da tek vermişsin :)
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

SELECT TBLSTHAR.stok_kodu, 
(SELECT sum(case TBLSTHAR.STHAR_gckod when 'G' then TBLSTHAR.STHAR_GCmik else -1 * TBLSTHAR.STHAR_GCmik end)A 
 where TBLSTHAR.DEPO_KODU=11 AND 
 tblsthar.sthar_TARIH < (GETDATE()-1) ) AS TOPLAM , 
(SELECT sum(case TBLSTHAR.STHAR_gckod when 'G' then TBLSTHAR.STHAR_GCmik else -1 * TBLSTHAR.STHAR_GCmik end)B 
 where TBLSTHAR.DEPO_KODU=11 AND 
 tblsthar.sthar_TARIH < GETDATE())AS TOPLAM2 
from tblsthar 
group by TBLSTHAR.stok_kodu,TBLSTHAR.DEPO_KODU,tblsthar.sthar_tarih
Parantez hatası verdi senin kod.
yalnız dikkat ben hem dünü hemde bugünü ayrı ayrı listelemeye çalışıyorum :) yukardaki gibi.sen tarih kısıtını da tek vermişsin :)

Aslında başka bir formuülle hallettim Stok giriş ve çıkış toplamlarının tutulduğu ayrı bir tablo var.

Dünü burdan bugünü de bu tablodan çekerek hazırladım Ama açıkçası bunuda merak ettim nasıl olacağını..
Teşekkürler..

Kod: Tümünü seç

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE VIEW STOK_BAKIYE_11 (
STOK_KODU,
STOK_ADI,
DUN_BAKIYE,
SU_ANDA_BAKIYE
)
AS SELECT 
TBLSTHAR.stok_kodu,
tblstsabit.stok_adi,
	 sum(case TBLSTHAR.STHAR_gckod when 'G' then TBLSTHAR.STHAR_GCmik else -1 * TBLSTHAR.STHAR_GCmik end),
	(TBLSTOKPH.TOP_GIRIS_MIK-TBLSTOKPH.TOP_CIKIS_MIK) from tblsthar
INNER JOIN TBLSTSABIT ON (TBLSTHAR.STOK_KODU=TBLSTSABIT.STOK_KODU)
INNER JOIN TBLSTOKPH ON (TBLSTHAR.STOK_KODU=TBLSTOKPH.STOK_KODU)
		where tblstsabit.GRUP_KODU IN('11')AND TBLSTHAR.DEPO_KODU=11 AND  tblsthar.sthar_TARIH < (GETDATE()-1)
		AND TBLSTOKPH.DEPO_KODU=11
group by TBLSTHAR.stok_kodu,TBLSTSABIT.STOK_ADI,TBLSTOKPH.STOK_KODU,
	 TBLSTOKPH.TOP_GIRIS_MIK,TBLSTOKPH.TOP_CIKIS_MIK 


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Cevapla