2013-06-10 22 views
7

Bu soruyu burada aradım ama bulamadım, lütfen siteye zaten sahip olduğumuzda lütfen bana yönlendirin.Verileri daha fazla sınırlamak için başka bir CTE kullanan CTE nasıl oluşturulur?

Daha fazla sınırlamak için veri olarak başka bir CTE kullanan CTE oluşturmanın bir yolunu arıyorum. Benim için bir rapor oluşturan bir CTE var, ancak mevcut raporu mevcut CTE'yi kullanarak başka bir girişle daraltmak istiyorum.

Umarım sorumu açıktır.

+0

mı? – hvd

+0

Kullanmakta olduğum kişi 3 – curiousBoy

cevap

17

2 (veya daha fazla) CTE'yi birlikte zincirleyebilirsiniz. Örneğin

with ObjectsWithA as 
(
    select * from sys.objects 
    where name like '%A%' 
), 
ObjectsWithALessThan100 as 
(
    select * from ObjectsWithA 
    where object_id < 100 
) 
select * from ObjectsWithALessThan100; 
+0

Çok teşekkürler, şampiyon gibi çalışıyor :) – curiousBoy

8

Bir CTE önceki CTEs başvurabilir:

with report as (
     <your query here> 
    ), 
    reportLimited as (
     select * 
     from report 
     where foo = @bar 
    ) 
select * 
from reportLimited 

tek kural referansları sıralı olmak zorunda olmasıdır. İleri referans yok.

+0

Teşekkür ederim Çok fazla – curiousBoy

5

Tabii, sadece doğrudan CTE başvuru: Bu hangi SQL lehçesi

WITH Source As 
( 
    SELECT * FROM AllData 
), 
Filtered AS 
(
    SELECT * FROM Source WHERE ID = 4 
) 
SELECT * FROM Filtered 
+0

Öneri için teşekkürler, bunu takdir et. – curiousBoy

0
WITH 
Source ---------1--------- 
As 
( 
    SELECT * FROM emp 
), 
destination----2---------- 
AS 
(
    SELECT * 
    FROM Source 
    WHERE E_id = 4 
) 

SELECT * FROM destination 
+2

Yaptıklarınızı açıklayabilir misiniz? –

+0

Cevabınız soruyu çözebilirken, sorunun ne olduğuna ve cevabınızın nasıl çözüldüğüne dair bir açıklama sağlamanız her zaman daha iyidir. Bu, bu ve gelecekteki cevapların daha da geliştirilmesi için bir öneridir. –

+0

@sangu patil: Bu ve diğer çift cevaplar arasında bir fark göremiyorum! Cevabınızı göndermeden önce, lütfen göndermediğinden emin olun! Aksi takdirde, sadece bir "sel" olmak ve diğer insanları alternatifleri daha zor bulmaktadır. – curiousBoy

İlgili konular