est-il possible de définir / lire des variables de la requête?
pseudo code: strong> p> Je sais que le résultat peut être Aussi réalisé en faisant la requête différente, l'utilisation réelle de ma question est trop difficile à expliquer. p> C'est Server Microsoft SQL en question. :) p> p>
4 Réponses :
Oui, vous pouvez définir des variables dans une requête. Votre syntaxe est en fait assez proche.
Pour ce faire, vous avez besoin: P>
DECLARE @AnimalName VARCHAR(20) DECLARE @TallestAnimal INT DECLARE @SmallestAnimal INT SELECT @AnimalName = animal_name, @TallestAnimal = (select top 1 height from animal order by height desc), @SmallestAnimal = (select top 1 height from animal order by height asc) FROM animals WHERE height BETWEEN @SmallestAnimal AND @TallestAnimal
Merci pour toutes les réponses ... donnez-moi une minute pour le tester :)
Testé .... "DÉCLARE @TEST VARCHAR (10) SELECT *, @ TEST = (SELECT TOP 1 UTILISATEUR DE COMMANDE DES UTILISATEURS par userid Desc) à partir de transmission.dbo.utilisateur" Résultat .... Une instruction SELECT qui attribue une valeur à une variable ne doit pas être combinée avec des opérations de récupération de données. soo ça ne marche pas ses coutures
@freands - Lisez mon commentaire à ce sujet dans mon message. C'est parce que vous avez sélectionné *. Vous devez affecter tous les champs à une variable, comme vous l'avez fait avec "@Test".
Droit! C'est une façon de le faire ... mais j'ai ~ 40 colonnes .... Attribution de toutes les variables sera un problème :) Mais merci de toute façon
@freandy lol d'accord. Je vous ai donné une solution basée sur votre problème animal. Quoi qu'il en soit, j'espère que cela a aidé.
Non, il n'est pas possible, utilisez plutôt comme ceci:
DECLARE @tallest_animal int, @smallest_animal int SET @tallest_animal=(SELECT max(height) from animals) SET @smallest_animal=(SELECT min(height) from animals) SELECT animal_name from animals where height between @tallest_animal AND @smallest_animal
Nah ... Je dois définir et lire une variable de la même requête. :(
Vous pouvez utiliser des tables dérivées au lieu de variables.
select A.animal_name, M.tallest, M.smallest from animals A inner join ( select max(height) as tallest, min(height) as smallest from animal ) M on A.height between M.smallest and M.tallest
Il n'est pas possible pour une instruction SELECT pour affecter des valeurs aux variables et renvoyer des résultatsset dans la même instruction SELECT - il s'agit d'une restriction de SQL Server. Ce ne serait-il pas génial si c'était possible!
Pourquoi souhaitez-vous utiliser des variables ici si vous avez besoin d'une seule déclaration? Ce qui suit ne fonctionnerait-au pas pour vous? P> Si vous souhaitez utiliser les variables ultérieurement dans une procédure stockée, votre seule option consiste à utiliser deux instructions sélectionnées: une pour L'affectation et une pour la sélection: p> Notez que lorsque vous utilisez ADO, vous pouvez utiliser des requêtes composées dans une commande ADO. En d'autres termes, votre composant de commande peut inclure plusieurs instructions, de sorte que les deux des solutions ci-dessus fonctionnent. P> P>
Qu'essayez-vous de réaliser à travers cette requête? Expliquer en mots plz :)
Eh bien, sa requête complexe qui rassemble beaucoup d'informations basées sur différents horodatés, etc., donc j'ai besoin de calculer les prix et les taux de consommation de Witin une requête SQL SOO, j'ai fini par faire les mêmes "sous-requires" plusieurs fois une pensée qu'il serait efficace de Définissez une variable et réutilisez-la.