2013-09-10 17 views
24

Czy można zapisać CTE w ramach CTE?CTE w ramach CTE

Chcę, żeby podążała za tą logiką, ale tłumaczowi nie podoba się ten kod.

with outertest as(

    with test as (
     select 
      SRnum, 
      gamenumber, 
      StartOfDistribution, 
      ApplicationNumber 
     from #main 
     where startofdistribution = '2011-06-14 00:00:00.000' 
     and SRnum = '313' 
     --order by SRnum, gamenumber, StartOfDistribution, ApplicationNumber 
    ) 
    select 
     ApplicationNumber 
     ,count(*) as RetailerAppearance 
    from test 
    group by ApplicationNumber 
    having count(*) = 4 

) select count(*) from outertest 

Odpowiedz

59

nie można zagnieżdżać współczynniki CTE takiego w SQL Server, ale można korzystać z wielu współczynniki CTE następujący sposób:

;with test as 
(
    select 
     SRnum, 
     gamenumber, 
     StartOfDistribution, 
     ApplicationNumber 
    from #main 
    where startofdistribution = '2011-06-14 00:00:00.000' 
    and SRnum = '313' 
    --order by SRnum, gamenumber, StartOfDistribution, ApplicationNumber 
), 
outertest as 
(
    select 
     ApplicationNumber 
     ,count(*) as RetailerAppearance 
    from test 
    group by ApplicationNumber 
    having count(*) = 4 
) 
select count(*) 
from outertest 
+0

Wydaje się, można uruchomić tylko jednej z dwóch CTE zapytaniami. Jakikolwiek sposób na uruchomienie obu? – Naufal

+0

@Naufal Nie jestem pewien, czy rozumiem twoje pytanie. Łączy to CTE razem, tak aby działały w tym samym czasie. – Taryn