Consulta en sql para clausura IN

Tengo la siguiente situación.

Estoy en la siguiente secuencia

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos WHERE Proyecto IN(valor1) GROUP BY Codigo,Descripción "

El valor valor1 cambie a lo que yo elija por ejemplo= '7853','7953','5623'.

Que el valor1 resiva los valores '7853','7953','5623' o menos o mas valores

En el siguiente ejemplo funciona perfecto.

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos WHERE Proyecto IN('7853','7953','5623') GROUP BY Codigo,Descripción "

Me podría ayudar con alguna idea.

2 respuestas

Respuesta

No entiendo tu pregunta.

En efecto, la sentencia "IN" espera un array de valores para hacer el WHERE en la tabla. Campo indicando.

¿Cuál es tu duda exactamente?

gracias por responder, si, es un poco complicado explicar.

pero como tu dices... es crear un array en --> WHERE Proyecto IN(Aquí el array)

no logro que me acepte los valores -->'7853','7953','5623', el problema lo tengo con las comillas y los apostrofes (" ' " )

si lo hago de esta forma, funciona bien.

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos WHERE Proyecto IN('7853','7953','5623') GROUP BY Codigo,Descripción "

peros si lo hago de esta forma, me da error

array1 ="7853"

array1 ="7953"

array1 ="5623"

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos WHERE Proyecto IN(Aquí el array) GROUP BY Codigo,Descripción "

espero haber explicado bien.

Exacto, si tu sentencia SQL está rodeada de comillas dobles (") los strings internos deben estar entre comillas simples (')

Respuesta

Otra alternativa que podes utilizar (dependiendo de la implementación del SQL) es dejar los valores en una tabla temporal y luego hacer el join, por ejemplo:

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos WHERE Proyecto IN('7853','7953','5623') GROUP BY Codigo,Descripción "

cambiaría por:

Create table #temp ( codigo char(4))

insert #temp select '7853'

insert #temp select '7953'

insert #temp select '5623'

"SELECT Codigo,Descripción,SUM(cantidad)AS Nregistro FROM SolicitudRepuestos,#temp WHERE Proyecto =codigo GROUP BY Codigo,Descripción "

De esta forma en muchos motores incluso mejora la performance para altos volúmenes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas