3 votos

Combinar varias columnas en una mediante una consulta en una base de datos de acceso

necesito escribir una consulta que combina varias columnas de texto.

mi base de datos es una base de datos de fondos de pantalla en mi ordenador (yo uso john's background switcher), por lo que se puede encontrar fácilmente a ellos y les han categorizado.

cada registro tiene 4 campos de caracteres (yo pensé que era más fácil hacer esto en lugar de un estilo de etiqueta cosa.) necesito una consulta para combinar estos para que todos los caracteres de todos los 4 campos diferentes en una columna, no se combinan en un campo. por favor, recuerde que algunos de los caracteres de los campos están vacíos.

también, si hay una manera más fácil de hacer esto, por favor me avise.

aquí está una muestra de lo que quiero:

(table)
col1|col2|col3    
x   |y   |z    
c   |    |    

(query output)    
outputcol    
x    
y
z  
c

3voto

Cristian Puntos 146

@Un Enano, SELECT Column1 + Column2 + Column3 le trabajo, siempre y cuando todas las columnas son de texto y no nulo.

|| es el operador de concatenación de Oracle. Para Acceder a ella es &.

Por lo que la mejor declaración sería

SELECT Column1 & Column2 & Column3 as NewColumn FROM MyTable  

Obviamente, si desea que el espacio separador entonces se convierte en

SELECT Column1 & " " & Column2 & " " & Column3 as NewColumn FROM MyTable

El & operador de tratamiento de los valores nulos como una cadena vacía.

Si no desea que los espacios en blanco que aparecen a continuación, usted podría usar algo como

SELECT Nz([Column1] + " ","") & Nz([Column2] + " ","") & [Column3]

EDITAR: Si usted también desea incluir el original columnas separadas así como la unió versión, a continuación, sólo la lista de ellos, por ejemplo.

SELECT Column1 & " " & Column2 & " " & Column3 as NewColumn, Column1, Column2, Column3 FROM MyTable

EDITAR después de la lectura de la OP ejemplo de salida.

Parece que todos estamos haciendo no es exactamente lo que el OP quería. Así que para lograr lo que usted está pidiendo en el ejemplo que han demostrado que usted necesita.

SELECT Column1 FROM MyTable WHERE Column1 Is Not Null and Column1<>""  
UNION ALL  
SELECT Column2 FROM MyTable WHERE Column2 Is Not Null and Column2<>""  
UNION ALL  
SELECT Column3 FROM MyTable WHERE Column3 Is Not Null and Column3<>""  

Si desea eliminar duplicados, entonces usted sólo tiene que quitar la palabra ALL, así que usted consigue

SELECT Column1 FROM MyTable WHERE Column1 Is Not Null and Column1<>""  
UNION  
SELECT Column2 FROM MyTable WHERE Column2 Is Not Null and Column2<>""  
UNION  
SELECT Column3 FROM MyTable WHERE Column3 Is Not Null and Column3<>""  

Obviamente, usted puede repetir la UNION SELECT... tantas veces como necesite.

1voto

WilliamKF Puntos 269

¿Tal vez esto?

 SELECT col1 FROM table
UNION
SELECT col2 FROM table
UNION
SELECT col3 FROM table
UNION
SELECT col4 FROM table
 

UNION solo une valores distintos (si tiene 4 't' valores, solo pone uno). UNION ALL almacenará duplicados.

0voto

A Dwarf Puntos 14537
SELECT (Column1 + Column2 + Column3 + Column4)
FROM YourTable

El de arriba va a concatenar los cuatro columnas. Si usted necesita un espacio separador:

SELECT (Column1 + " " + Column2 + " " + Column3 + " " + Column4)
FROM YourTable

Por lo tanto el signo funciona como un concatenator. Por último, si usted necesita el nombre de la columna resultante:

SELECT (Column1 + Column2 + Column3 + Column4) AS ColumnName
FROM YourTable


Una última nota, ha sido una eternidad desde la última vez que trabajó en el Acceso, pero yo creo que usted también puede ser capaz de concatenar los campos con el operador||:

SELECT (Column1||Column2||Column3||Column4)
FROM YourTable


Siguiente en los comentarios a esta respuesta, diferentes motores de base de datos puede proporcionar sintaxis diferentes. Una molestia, no hay duda:

SELECT Column1 & Column2 & Column3 & Column4
FROM YourTable

Aquí hemos sustituido '+' con el habitual '&' concatenación de símbolos presentes en muchas aplicaciones de windows.

Saludos

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: