SQL Server: ¿Generar la cláusula WHERE a partir de los identificadores del conjunto de resultados?
Tengo una consulta que produce el siguiente conjunto de resultados:
ID (texto) VAL
1 A
2 B
3 C
Quiero generar una cláusula WHERE a partir de los IDs del conjunto de resultados:
where id in (‘1’, ‘2’, ‘3’)
Con Oracle, puedo usar la siguiente consulta para generar una cláusula WHERE:
with a as (
)
select ‘where id in (‘
|| listagg(id, ‘,’) within group(order by id)
|| ‘)’ as where_clause
from a
¿Hay alguna manera de hacer lo mismo usando SQL Server?
Relacionado: Oracle: Generate WHERE clause from resultset ids?
davy.ai
Sí, en SQL Server se puede utilizar la función STRING_AGG para concatenar los IDs en una lista separada por comas, y luego utilizar esto en la cláusula WHERE:
Esto le dará el resultado deseado: