J'ai sélectionné la requête qui retourne ID, nom, description, prix
im essayant d'obtenir un identifiant, prix seul basé sur la condition Il devrait afficher le nom, la description p> merci p> p> p> p> P> P> P> P> P> >
4 Réponses :
@show =1 if @show = 1 begin select id, name, description, price from tbl end else begin select id, price from tbl end
Merci, ma requête SELET a 50 lignes, existe-t-il un moyen de faire avec si ou une instruction CASE dans Sélectionner une colonne comme si nous devons ajouter ou supprimer une colonne en fonction de la condition, tout suppléant puis-je obtenir?
Vous pouvez rejoindre les colonnes que vous souhaitez et exécuter la requête.
DECLARE @filter AS Integer DECLARE @columns AS nvarchar(50) DECLARE @sql AS nvarchar(50) Set @filter = 1 if @filter = 0 begin Set @columns = 'id, name, description, price' end else begin Set @columns = 'id, name' end set @sql = 'select ' + @columns + ' from tbl' EXECUTE sp_executesql @sql print @sql
Votre réponse toute votre réponse m'a beaucoup aidé, merci. Enfin je suis allé cette méthode fonctionne sur la cordon concat Les champs sont ID, nom, description, prix p>
déclarer @id int;
Déclarez @sqlCommand Nvarparar (max);
Déclarez @Visible int;
SET @SQLCOMMAND = 'SELECT ID,' + Case quand @Visible = 1 Alors 'Nom, Description' Sinon '' Fin + ', prix de TBL
où id = @ID ' p>
Exécuter SP_EXECUTSQL @SQLCOMMAND, N '@ ID INT', @ ID = @ ID P>
si je passe visible = 1 le résultat sera Nom de l'identifiant Desc Price P>
visible = 0 PRIX ID P>
merci p>
Utilisez SQL dynamique ou écrivez votre requête N fois avec Big IFS, répétant la plupart du code à partir de l'instruction code> code> dans chacune d'elles.
On ne sait pas ce que tu essayes de faire ici. Pour @ show = 1
@show = 1 Sélectionnez ID, nom, si @show = 1 commence Nom code> ??. Veuillez éditer votre question et fournir plus de détails.Je passe le paramètre show comme 0 ou 1, si 0 ne devez sélectionner que ID, prix si je passe 1, il sélectionne toutes les 4 colonnes, merci