es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    CON a como (
      -- mi consulta aquí
    )
    SELECCIONE 'WHERE id IN (' + STRING_AGG(ID, ',') + ')' como cláusula_where
    DE a;
    

    Esto le dará el resultado deseado:

    WHERE id IN (1,2,3)
    

Comments are closed.