2010-10-20 6 views
0

Je travaille dans SQL Server 2008, et j'essaie de sélectionner dans une table temporaire en fonction d'une certaine condition ... pour un rapport, j'ai besoin jusqu'à 18% des enregistrements pour être d'un certain type de produit.sql serveur conditionnel sélectionner dans la table temporaire

if ((@totalRecords * .18) > @productTypeCount) 
    select * into #tmpLP_REIT 
    from myTable where productType = @productType 
else 
    select top 18 percent * into #tmpLP_REIT 
    from myTable where productType = @productType 

Je continue à obtenir l'erreur « il y a déjà un objet nommé « #tmpLP_REIT » dans la base de données », même si je sais que ce n'est pas là parce que quand j'essaie de laisser tomber cette table, il souligne qu'il n » t existe. J'ai aussi cette erreur sur la clause else.

Il semble que ce soit en ignorant mon instruction if et en créant la première table, puis en essayant de la créer à nouveau. Aucune suggestion?

S'il vous plaît et merci à l'avance.

Répondre

1

Ce code est-il dans une boucle? .. qui expliquerait l'erreur si elle se produisait la deuxième fois cependant. Si ce n'est pas le cas, le vérificateur de syntaxe doit juste être étouffant car il voit 2 requêtes créant la même table, sans se rendre compte qu'il s'agit d'un conditionnel.

Une solution serait de créer la table en premier, puis de modifier la syntaxe de ces 2 requêtes en requêtes insert into.

Une autre solution serait d'utiliser SQL dynamique ... construire la bonne requête dans le conditionnel, puis l'exécuter ensuite. Cela devrait passer la validation que vous êtes en train de déclencher.

+0

La raison pour laquelle j'essayais d'éviter ceci était parce que ceci est seulement le premier d'un certain nombre de tables que je finirai par créer ... tables plutôt importantes, ainsi choisir dedans couperait beaucoup de code et effort :) – IWriteApps

+0

@ Ghio ahh .. bien j'ai ajouté une autre possibilité à ma réponse. De plus, vous n'avez pas mentionné si c'était dans une boucle ou non? – Fosco

+0

oh ouais désolé, pas dans une boucle. – IWriteApps

Questions connexes