Une requête avec des variables
Est-il possible de définir/lire des variables à partir de l'intérieur de la requête?
pseudo-code:
SELECT animal_name,
@tallest_animal = (select top 1 height from animal order by height desc) as tallest,
@smallest_animal = (select top 1 height from animal order by height asc) as smallest
FROM animals
WHERE height BETWEEN @smallest_animal AND @tallest_animal
Je sais que le résultat peut être obtenu en faisant la requête différents, ma question est la réelle utilisation est trop difficile à expliquer.
C'est Microsoft SQL Server en question. 🙂
Ce que vous essayez d'atteindre par le biais de cette requête? L'expliquer par des mots plz 🙂
bien son une requête complexe qui rassemble beaucoup d'informations basées sur les différentes horodateurs etc donc j'ai besoin d'calculez les prix et les taux de consommation de tous les witin une requête sql soo j'ai fini par makeing le même "subquerys" plusieurs fois pensé qu'il serait efficace pour définir une variable et ré-utiliser.
bien son une requête complexe qui rassemble beaucoup d'informations basées sur les différentes horodateurs etc donc j'ai besoin d'calculez les prix et les taux de consommation de tous les witin une requête sql soo j'ai fini par makeing le même "subquerys" plusieurs fois pensé qu'il serait efficace pour définir une variable et ré-utiliser.
OriginalL'auteur freand | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez définir des variables dans une requête. Votre syntaxe est en fait assez proche.
Pour ce faire vous devez:
Remarque: Vous ne pouvez l'utiliser QUE lors de l'affectation d'un terrain à une variable.
Vous devez vous assurer que tous les champs dans la requête sont affectées à une variable, sinon vous obtiendrez l'erreur suivante:
Pour surmonter cette difficulté, il suffit d'attribuer AnimalName à une @AnimalName variable.
Edit:
Ce code est en supposant que la hauteur de champ est de type INT.
Merci pour toutes les réponses... donnez-moi une minute pour le tester 🙂
Testés.... "declare @test de type varchar(10) select *,@test = (select top 1 userid de l'ordre des utilisateurs par nom d'utilisateur desc) de Transmission.dbo.les utilisateurs"....Une instruction SELECT qui assigne une valeur à une variable ne doit pas être combinées avec des données-opérations de récupération. soo il ne marche pas il seames
lire mon commentaire à ce sujet dans mon post. C'est parce que vous avez SÉLECTIONNEZ *. Vous devez affecter tous les champs d'une variable, comme vous l'avez fait avec "@test".
aww checkin... désolé
OriginalL'auteur Darren
Vous pouvez utiliser les tables dérivées au lieu de variables.
OriginalL'auteur Mikael Eriksson
Non, il n'est pas possible, au lieu d'utiliser comme ceci:
Quelque chose de ce genre de travail, mais je ne suis pas sûr de ce que vous cherchez.
OriginalL'auteur Milee
Il n'est pas possible pour une instruction select pour affecter des valeurs à des variables et de retour d'un jeu de résultats dans la même instruction SELECT - c'est une restriction de SQL Server. Ne serait-il pas génial si c'était possible!
Pourquoi voulez-vous utiliser des variables, si vous êtes nécessitant une seule déclaration? L'exemple suivant fonctionne pas pour vous?
Si vous souhaitez utiliser les variables plus tard, dans une procédure stockée, votre seule option est d'utiliser deux déclarations: Une pour l'attribution et l'autre pour le sélectionner:
Noter que lors de l'utilisation d'ADO, vous pouvez utiliser le composé de requêtes dans un ADO de commande. En d'autres termes, votre commande composant peut inclure plus d'un énoncé, de sorte que les deux solutions ci-dessus ne fonctionnerait.
OriginalL'auteur Peter