2017-07-24 7 views
2

Je voudrais obtenir les dernières 40 enregistrements dans une table temporaire, quelque chose comme ceci:Comment puis-je sélectionner les 40 enregistrements les plus récents dans une table temporaire?

SELECT * INTO #MY_TEMP 
FROM 
    (
    SELECT TOP 40 * 
    FROM SOME_TABLE 
    ORDER BY RECORD_DATE DESC 
) 

Cependant, je reçois une erreur: Une clause ORDER BY est interdite dans une table dérivée.

J'ai vu quelques solutions de contournement mentionnées sur d'autres publications, impliquant TOP PERCENT, mais mon select utilise déjà un TOP et il ne fonctionne pas.

Comment puis-je obtenir ces enregistrements dans ma table temporaire?

Répondre

2

Vous ne pouvez pas utiliser ORDER BY dans les instructions de sous-sélection. Au lieu de supprimer la sous-sélection. Votre SQL devrait ressembler à ceci:

SELECT TOP 40 * INTO #MY_TEMP 
FROM SOME_TABLE 
ORDER BY RECORD_DATE DESC