Объединение нескольких столбцов в один с помощью запроса в базе данных access

Мне нужно написать запрос, который объединяет несколько колонок текста.

моя база данных-это база данных обоев на моем компьютере (я использую переключатель фона Джона), поэтому я могу легко найти их и классифицировать.

каждая запись имеет 4 символьных поля (я подумал, что это проще сделать, чем стиль тега.) мне нужен запрос, чтобы объединить их, чтобы все символы из всех 4 разных полей находились в одном столбце, а не объединялись в одно поле. пожалуйста, помните, что некоторые символьные поля пусты.

также, если есть более простой способ сделать это, пожалуйста, сообщите мне.

вот пример что я хочу:

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

(query output)    
outputcol    
x    
y
z  
c
20
задан Troggy
26.02.2023 23:06 Количество просмотров материала 3228
Распечатать страницу

3 ответа

может это?

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

UNION соединяет только уникальные значения (если у вас есть 4 значения 't', то только одно). UNION ALL будет хранить дубликаты.

1
отвечен hyperslug 2023-02-28 06:54

@Карлик, SELECT Column1 + Column2 + Column3 будет работать до тех пор, пока все столбцы являются текстовыми и ненулевыми.

|| - оператор конкатенации для Oracle. Для доступа это &.

так что лучше заявление будет

SELECT Column1 & Column2 & Column3 as NewColumn FROM MyTable  

очевидно, если вы хотите разделитель пространства, то он становится

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

& оператор будет обрабатывать значения null как пустую строку.

если вы не хотите, чтобы дополнительные пробелы, то вы можно использовать что-то вроде

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

изменить: Если вы также хотите включить оригинальные отдельные столбцы, а также объединенную версию, просто перечислите их, например.

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

редактировать после прочтения примера вывода OP.

похоже, что мы все делаем совсем не то, что хотел ОП. Таким образом, чтобы достичь того, что вы просите в Примере, который вы показали, что вам нужно.

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<>""  

если вы хотите удалить дубликаты, то вы просто нужно убрать слово ALL, так что вы получите

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<>""  

очевидно, вы можете повторить UNION SELECT... столько раз, сколько вам нужно.

1
отвечен pipTheGeek 2023-02-28 09:11
SELECT (Column1 + Column2 + Column3 + Column4)
FROM YourTable

выше будет объединить все четыре столбца. Если вам нужен пробел:

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

таким образом, знак "плюс" работает concatenator. Наконец, если вам нужно назвать результирующий столбец:

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

последнее замечание, прошло много времени с тех пор, как я последний раз работал над Access, но я считаю, что вы также можете объединить поля с оператором||:

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

следующие комментарии к этому ответу, разные СУБД может обеспечить разный синтаксис. Досада, несомненно:

SELECT Column1 & Column2 & Column3 & Column4
FROM YourTable

здесь мы заменили ' + 'на обычный' & ' символ объединения, присутствующий во многих приложениях windows.

Ура

0
отвечен A Dwarf 2023-02-28 11:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх