¿Enlazar la lista literal a la consulta SQL como columna que devolvería 1 fila?

Tengo una consulta SQL que devuelve una sola fila, tengo una lista de números que necesito haber devuelto como filas individuales con los datos de una sola fila vinculados a su fila.

por ejemplo esto es lo que estoy tratando de hacer

select a,b,c, barcode
from database
join ('12345', '67890',...) as barcode
where a=1 and b=2 and c=3

Necesito hacerlo de esta manera debido al hecho de que estoy modificando un código que busca un formato específico que provenga de la consulta, y modificar el código para que coincida con la lista literal que tengo es mucho más difícil que hacer algo como esto.

    Example Output:

a     b     c     barcode
-     -     -     -------
1     2     3     12345
1     2     3     67890
1     2     3     ....
1     2     3     ....
...

preguntado el 22 de mayo de 12 a las 20:05

2 Respuestas

El método más fácil sería crear una tabla de códigos de barras con una sola columna, insertar los valores que desee aquí uno a la vez y luego unirse a esa tabla.

Podría usar un sindicato para falsificarlo también. El problema con la combinación ('484', '48583',...) es que se está uniendo a una sola fila con varias columnas, cuando desea una fila por registro.

pseudo codificado:

select a,b,c, barcode
from database
join (select 12345 union all select 289384 union all...)a as barcode
where a=1 and b=2 and c=3

contestado el 22 de mayo de 12 a las 22:05

Básicamente, podría pasar la lista como una sola cadena CSV y transformarla en un conjunto de filas de elementos. En tales casos, a menudo se usa una función con valores de tabla, pero en realidad hay muchas opciones para explorar. Se puede encontrar una colección muy completa de varios métodos y sus pruebas en el conjunto de artículos de Erland Sommarskog: Matrices y listas en SQL Server.

Si fuera, por ejemplo, una función, su consulta podría verse así:

SELECT
  t.a,
  t.b,
  t.c,
  s.Value AS barcode
FROM yourtable t
CROSS JOIN dbo.Split('12345,67890', ',') s
WHERE t.a = 1
  AND t.b = 2
  AND t.c = 3

contestado el 22 de mayo de 12 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.