8 votes

SQL Server stocke plusieurs valeurs dans une variable sql

J'ai la requête suivante :

select * 
from cars 
where make in ('BMW', 'Toyota', 'Nissan')

Ce que je veux faire, c'est stocker les paramètres where dans une variable SQL.

Quelque chose comme :

declare @caroptions varchar(max);
select @caroptions =  select distinct(make) from carsforsale;
print @caroptions;
select * from cars where make in (@caroptions)

Le problème est l'impression de @caroptions a seulement le dernier résultat retourné de :

select distinct(make) from carsforsale;

Je veux qu'il puisse stocker plusieurs valeurs.

Des idées ?

0voto

Joe Taras Points 4050

Vous pouvez utiliser l'instruction JOIN.

SELECT distinct c.*
FROM cars c
JOIN carsfrosale s
ON s.id = c.fk_s

Si vous voulez filtrer votre liste de voitures à vendre, vous pouvez ajouter

WHERE s.id in (....)

0voto

karma Points 11

En TSQL, vous pouvez utiliser STRING_AGG de la manière suivante

select STRING_AGG(car_name,',') as csv
from cars 
where make in ('BMW', 'Toyota', 'Nissan')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X