2011-05-16 2 views
1

Comment écrire cette requête widout CTE?écrire une requête sans CTE

with cte as(
select FK#GharardadeAsli,MAX(PK#Shenase) as PK#Shenase,Max(TarikheSabt) as TarikheSabt from TBL#Gharardad where FK#GharardadeAsli is not null group by FK#GharardadeAsli 
) 
select * from v#gharardad inner join cte on cte.PK#Shenase = v#gharardad.[Shenase] 

Répondre

1

Vous pouvez l'écrire en tant que sous-requête.

select * 
    from v#gharardad 
    inner join (select FK#GharardadeAsli, 
        MAX(PK#Shenase) as PK#Shenase, 
        Max(TarikheSabt) as TarikheSabt 
       from TBL#Gharardad 
       where FK#GharardadeAsli is not null 
       group by FK#GharardadeAsli 
      ) sub on sub.PK#Shenase = v#gharardad.[Shenase] 
+0

u peut me dire son LINQ égale? – Saleh

+1

Je peux, je vais travailler dessus et mettre à jour ici plus tard. – Leons

+0

J'essaie par moi-même mais j'ai tellement de problème avec le groupe dans linq.Il semble plus difficile que sql – Saleh

2

Qu'en est-

SELECT * 
FROM (
      select FK#GharardadeAsli 
        , MAX(PK#Shenase) as PK#Shenase 
        , Max(TarikheSabt) as TarikheSabt 
      from TBL#Gharardad 
      where FK#GharardadeAsli is not null 
      group by FK#GharardadeAsli 
     ) v 
     INNER JOIN (
      select FK#GharardadeAsli 
        , MAX(PK#Shenase) as PK#Shenase 
        , Max(TarikheSabt) as TarikheSabt 
      from TBL#Gharardad 
      where FK#GharardadeAsli is not null 
      group by FK#GharardadeAsli 
     ) cte ON cte.Shenase = v.Shenase   
+0

+1 Ca marche aussi – Saleh

+0

Peux-tu me dire si son linq est égal? – Saleh

+0

@ LightWing - désolé, je n'ai aucune idée. –

-1

Declare Table variable et faire la même chose

+0

Ce n'est pas une bonne solution, mais je ne la consacre pas. – Saleh

+0

J'ai une offre pour vous acceptez la bonne réponse en cliquant dessus – Saleh

Questions connexes