*Merhaba,

*
*SQL sorunuz güzel :) Bir arkadaşım bu konuda aşağıdaki çözümü önerdi size.
Bu kod, Oracle üzerinde çalışan bir koddur.*





ADIM 1: GEÇİCİ TABLOYU OLUŞTURALIM
===================================

CREATE
TABLE VERILER.SAHA_01

(

ID NUMBER(10),

TIP
VARCHAR2(50 BYTE)

)


ADIM 2 : Tip bazında en son kaydı bul
===================================

CREATE
OR REPLACE FORCE VIEW VERILER.SAHA_MAX

(

TIP
,

MAX_ID

)

AS

( SELECT VERILER.SAHA_01.TIP, MAX (VERILER.SAHA_01.ID) AS MAX_ID

FROM VERILER.SAHA_01

GROUP BY VERILER.SAHA_01.TIP)

WITH CHECK OPTION;



ADIM 3 : Tip bazında sondan 2. kaydı bul (iyi ki sadece son iki kaydı
istedin)
===================================



CREATE
OR REPLACE FORCE VIEW VERILER.SAHA_MAX_2

(

TIP
,

MAX_ID

)

AS

( SELECT VERILER.SAHA_01.TIP, MAX (VERILER.SAHA_01.ID) AS MAX_ID

FROM VERILER.SAHA_01, VERILER.SAHA_MAX

WHERE VERILER.SAHA_01.ID <> VERILER.SAHA_MAX.MAX_ID

AND VERILER.SAHA_MAX.TIP = VERILER.SAHA_01.TIP

GROUP BY VERILER.SAHA_01.TIP)

WITH CHECK OPTION;




ADIM 4 : 2 ile 3'ü birleştir
===================================


CREATE
OR REPLACE FORCE VIEW VERILER.SAHA_MAX_3

(

TIP
,

MAX_ID

)

AS

(SELECT VERILER.SAHA_MAX.TIP, VERILER.SAHA_MAX.MAX_ID

FROM VERILER.SAHA_MAX

UNION ALL

SELECT VERILER.SAHA_MAX_2.TIP, VERILER.SAHA_MAX_2.MAX_ID

FROM VERILER.SAHA_MAX_2)

WITH CHECK OPTION;



ADIM 5 : SORGUYU ÇALIŞTIR
===================================

select VERILER.SAHA_MAX_3.MAX_ID, VERILER.SAHA_MAX_3.TIP from
VERILER.SAHA_MAX_3 order by 2, 1 ;




Selamlar,
Nuri Akman


6 Mart 2013 13:02 tarihinde Hakan Karas <hakan.ka...@innotrend.com.tr>yazdı:

> Özgür Bey linki inceledim ama ben bu iişlemi kendi sorguma uygun nasıl
> yazacağımı anlayamadım. Rica etsem basit bir örnekle yazabilir misinz.
>
> Kolay gelsin
>
>
>
> 2013/3/6 Omer Barlas <o...@barlas.com.tr>
>
>> recursive bir sorgu kolayca yapılır. detayları şuradan okuyabilirsin;
>>
>> http://msdn.microsoft.com/en-us/library/ms186243%28v=sql.105%29.aspx
>>
>>
>> 6 Mart 2013 11:41 tarihinde Hakan Karas <hknka...@gmail.com> yazdı:
>>
>>> Selamlar herkese
>>>
>>> Benim sql de içinde çok büyük veri olan bir tabloya kısıtlı bir sorgu
>>> atmam lazım. Tablom aşağıdaki gibi. Amacım tip alanında kaç tane aynı tip
>>> olursa olsun bana son 2 tane kaydı getirsin. Bu sorguyu nasıl yazabilirm
>>> yardımcı olabilir misiniz. Ms sql server 2008 kullanıyorum.
>>>
>>> *Örn Tablom
>>> id      tip*
>>> 1       A
>>> 2       A
>>> 3       A
>>> 5       C
>>> 4       A
>>> 6       D
>>> 7       C
>>> 8       C
>>> 9       D
>>>
>>> *Almak istediğim çıktı
>>> id      tip*
>>> 3       A
>>> 4       A
>>> 7       C
>>> 8       C
>>> 6       D
>>> 9       D
>>>
>>> _______________________________________________
>>> Linux-programlama mailing list
>>> Linux-programlama@liste.linux.org.tr
>>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>>
>>>
>>
>>
>> --
>> Omer Barlas
>> o...@barlas.com.tr
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> Linux-programlama@liste.linux.org.tr
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap