Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > SQL
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

SQL Yapısal sorgulama dili hakkında sorularınızı buraya sorabilirsiniz.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 16-02-2009, 16:28   #1
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan T-SQL de Rekürsif Select ifadesi yazmak

Benim Bir SQL Select sorgum var fakat bu sorgunun döndürdüğü satırlar arasında listelenmesini istemediğim satırlar var.
Sorgumda her portföy numaralı satırın enfazla 1 kez listelenmesini istiyorum.Ve bu satırlar Statno alanındaki bilgi en büyük değere sahip satırlar olmalı...

Diyelimki benim sorgum şu şekilde bir sonuç döndürüyor

Portföy No Statno
1905 1
1905 2
1905 3
1906 2
1906 3
1907 1
1908 4

Sizin düzenleyeceğiniz kod ise şu sonucu döndürmeli...

Portföy No Statno
1905 3
1906 3
1907 1
1908 4


SORGU :================================================= =================

SELECT LG_086_CLCARD.CODE AS Kodu, LG_086_CLCARD.DEFINITION_ AS Ünvanı, LG_086_01_CSCARD.DOC AS Türü,
LG_086_01_CSCARD.CURRSTAT AS Statü, LG_086_01_CSCARD.PORTFOYNO AS [Portföy No], LG_086_01_CSCARD.SERINO AS [Seri No],
LG_086_01_CSCARD.CITY AS Şehir, LG_086_01_CSCARD.OWING AS Borçlu, LG_086_01_CSCARD.DUEDATE AS Vade,
LG_086_01_CSCARD.SETDATE AS [İşl.Tarihi], LG_086_01_CSCARD.AMOUNT AS TUTAR, LG_086_01_CSTRANS.TRCODE AS Türü,
LG_086_01_CSTRANS.STATNO AS Sırası
FROM LG_086_CLCARD INNER JOIN
LG_086_01_CSTRANS ON LG_086_CLCARD.LOGICALREF = LG_086_01_CSTRANS.CARDREF INNER JOIN
LG_086_01_CSCARD ON LG_086_01_CSTRANS.CSREF = LG_086_01_CSCARD.LOGICALREF
GROUP BY LG_086_CLCARD.CODE, LG_086_CLCARD.DEFINITION_, LG_086_01_CSCARD.DOC, LG_086_01_CSCARD.SERINO, LG_086_01_CSCARD.CITY,
LG_086_01_CSCARD.OWING, LG_086_01_CSCARD.DUEDATE, LG_086_01_CSCARD.SETDATE, LG_086_01_CSCARD.AMOUNT,
LG_086_01_CSTRANS.TRCODE, LG_086_01_CSTRANS.STATNO, LG_086_01_CSCARD.CURRSTAT, LG_086_01_CSCARD.PORTFOYNO
HAVING (LG_086_01_CSCARD.DUEDATE > CONVERT(DATETIME, '2009-02-13 00:00:00', 102)) AND (LG_086_CLCARD.CODE LIKE 'M%')
================================================== ====================

Yardımlarınızı bekliyorum,

Kolay gelsin , iyi çalışmalar....

Ersoy Aydın
Logo Sistem Uzmanı
http:\\www.lsuersoy.gen.tr
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 16-02-2009, 20:49   #2
beab05
 
beab05 kullanıcısının avatarı
 
Giriş: 19/03/2007
Şehir: Instant Karma
Mesaj: 1,203
Excel Vers. ve Dili:
Office 2007 Enterprise (Eng.)
Varsayılan

Merhabalar;
Daha iyi test etmeniz için scriptleri de veriyorum..

Önce tablomuzu ismi "excel" yapalım ve verileri yerleştirelim..
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
CREATE TABLE [Excel] (
  [id] int IDENTITY(1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY,
  [PortfoyNo] nchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  [StatNo] nchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
)
ON [PRIMARY]
GO


/* Data for the `Excel` table  (Records 1 - 7) */


INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (1, N'1905', N'1')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (2, N'1905', N'2')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (3, N'1905', N'3')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (4, N'1906', N'2')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (5, N'1906', N'3')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (6, N'1907', N'1')
GO

INSERT INTO [Excel] ([id], [PortfoyNo], [StatNo])
VALUES (7, N'1908', N'4')
GO
Alttaki sorgu yardımıyla da istediğimiz verileri elde ederiz.. Siz kendi tablonuza göre uyarlarsınız..

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
SELECT bb.* FROM( 
    SELECT Portfoyno,MAX(statno) AS MaxSayı
    FROM excel 
    GROUP BY portfoyno) x 
    JOIN excel bb ON x.portfoyno =bb.portfoyno 
    AND x.MaxSayı =bb.statno
    ORDER BY portfoyno
beab05 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 08:42   #3
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan Teşekkürler

Merhabalar ,

ilginize teşekkür ederim.

Bu uygulamayı ilk önce SQL kodu olarak çözümlemeyi düşünüyorum.
Çünkü oluşturacağım koda daha sonradan yeni tablolar ve yeni bilgiler çekmeyi düşünüyorum...


Cevabınıza göre :

burada MAX ın sonuç çevirebilmesi için sanırım iç içe select kullanıyoruz...
Örneğinizi kendi sorguma adapte etmeye çalışacağım.

Tekrar teşekkürler

Kolay gelsin , iyi çalışmalar....
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 09:24   #4
beab05
 
beab05 kullanıcısının avatarı
 
Giriş: 19/03/2007
Şehir: Instant Karma
Mesaj: 1,203
Excel Vers. ve Dili:
Office 2007 Enterprise (Eng.)
Varsayılan

Merhaba;

Çözüm zaten SQL iledir, verdiğim tablo oluşturma ve insert ten oluşan SQL scripti kafanızı karıştırmasın o sadece alttaki sorgunun çalışabilmesi içindi, yani test etmeniz içindi.. New query deyip scripti yapıştırıp çalıştırabilirsiniz daha sonra yine query de sorguyu deneyebilirsiniz.

Elbette benim de bahsettiğim kendi tablonuza uyarlamanızdır..

Sorguyu da biraz açıklamak gerekirse, aynı tablonun, farklı bir aliası ile join yapıp her iki tabloda portfoyno larının ve StatNo sayısının MAXStatNo sayıları ile arasında eşleşenleri vermesidir.
beab05 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 09:41   #5
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

Tekrar Merhaba ;

Göndermiş olduğunuz ilk kod Excel Tablesini (Sadece Fieldları) SQL 2000 de oluşturdu.Value değerler field alanlarına insert edilemedi...

Değerleri elle girdim.

ikinci sorgu ise şu hatayı çeviriyor...

Server: Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'JOIN'.

sorgudaki X ve bb birer alias mı ?

"bb." neyi ifade ediyor. ?

teşekkürler



Not : Bu mesajı yazarken ikinci cevabınızı görmemiştim.
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 09:48   #6
beab05
 
beab05 kullanıcısının avatarı
 
Giriş: 19/03/2007
Şehir: Instant Karma
Mesaj: 1,203
Excel Vers. ve Dili:
Office 2007 Enterprise (Eng.)
Varsayılan

SQL 2000 belki de as deyimini istiyor olabilir siz "as x" ve "as bb" olarak deneyiniz..
Evet her ikisi de aliastır "bb." diyerek "bb" aliaslı tablodan ilgili alanı al diyoruz..
beab05 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 10:10   #7
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

Alıntı:
beab05 tarafından gönderildi Mesajı Görüntüle
SQL 2000 belki de as deyimini istiyor olabilir siz "as x" ve "as bb" olarak deneyiniz..
Evet her ikisi de aliastır "bb." diyerek "bb" aliaslı tablodan ilgili alanı al diyoruz..
Enteresan birşey yakaladım , sadece aşağıdaki kod bloğu istediğim sonucu veriyor...bunu nasıl yorumlarsınız...

SELECT PortfoyNo,MAX(StatNo) AS MaxSayı
FROM Excel
GROUP BY PortfoyNo
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 10:21   #8
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

Yukarıdaki Sorgu bloğuna göre

Sorgumu adapte etmek istedim ama resimdeki hatayı aldım




__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]

Bu mesaj en son " 17-02-2009 " tarihinde saat 10:36 itibariyle lsuersoy tarafından düzenlenmiştir....
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 10:36   #9
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

http://www.lsuersoy.gen.tr/content/S..._Sorgu_002.JPG
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 17-02-2009, 10:52   #10
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

Başarısız sonuç döndüren kodu şu şekilde sadeleştirdim....

SELECT
KART2.PORTFOYNO AS [Portföy No],
MAX(TRANS.STATNO) AS Sırası,
KART.CODE AS Kodu,
KART.DEFINITION_ AS Ünvanı,
KART2.DOC AS Türü,
KART2.CURRSTAT AS Statü,
KART2.SERINO AS [Seri No],
KART2.CITY AS Şehir,
KART2.OWING AS Borçlu,
KART2.DUEDATE AS Vade,
KART2.SETDATE AS [İşl.Tarihi],
KART2.AMOUNT AS TUTAR,
TRANS.TRCODE AS Türü
FROM LG_086_CLCARD AS KART
INNER JOIN LG_086_01_CSTRANS AS TRANS ON KART.LOGICALREF = TRANS.CARDREF
INNER JOIN LG_086_01_CSCARD AS KART2 ON TRANS.CSREF = KART2.LOGICALREF
GROUP BY KART2.PORTFOYNO,KART.CODE,KART.DEFINITION_,KART2.D OC, KART2.SERINO,KART2.CITY,
KART2.OWING, KART2.DUEDATE, KART2.SETDATE, KART2.AMOUNT,
TRANS.TRCODE, TRANS.STATNO, KART2.CURRSTAT
HAVING(KART2.DUEDATE > CONVERT(DATETIME, '2009-02-13 00:00:00', 102)) AND (KART.CODE LIKE 'M%')
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 03:53


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri- Çorlu Çelik Konstruksiyon-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden