web-dev-qa-db-ja.com

Accessデータベースのクエリを使用して、複数の列を1つにマージします

複数のテキスト列を組み合わせたクエリを作成する必要があります。

私のデータベースは私のコンピューター上の壁紙のデータベースです(私はジョンのバックグラウンドスイッチャーを使用しています)ので、簡単にそれらを見つけて分類することができます。

各レコードには4つの文字フィールドがあります(タグスタイルのものよりもこれを行うほうが簡単だと思いました)。これらをマージして、4つの異なるフィールドすべてのすべての文字が1つのフィールドにマージされるのではなく、1つのフィールドにマージされるクエリが必要です。一部の文字フィールドは空であることを覚えておいてください。

また、これを行う簡単な方法がある場合は、通知してください。

これが私が欲しいもののサンプルです:

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

(query output)    
outputcol    
x    
y
z  
c
3
crazybmanp

たぶんこれ?

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

UNIONは個別の値のみを結合します(4つの 't'値がある場合、1つだけを配置します)。 UNION ALL重複を保存します。

1
hyperslug

@Aドワーフ、SELECT Column1 + Column2 + Column3は、すべての列がテキストでnull以外である限り機能します。

||は、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の出力例を読んだ後に編集します。

私たちは皆、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<>""  

重複を削除したい場合は、Word 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...は必要なだけ繰り返すことができます。

2
pipTheGeek
SELECT (Column1 + Column2 + Column3 + Column4)
FROM YourTable

上記は、4つの列すべてを連結します。スペース区切りが必要な場合:

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

したがって、プラス記号は連結子として機能します。最後に、結果の列に名前を付ける必要がある場合:

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

最後にもう1つ、Accessに最後に取り組んでから何年も経ちましたが、フィールドを||で連結できる可能性もあると思います。オペレーター:

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

この回答へのコメントに続いて、データベースエンジンによって構文が異なる場合があります。迷惑、間違いない:

SELECT Column1 & Column2 & Column3 & Column4
FROM YourTable

ここでは、「+」を、多くのWindowsアプリケーションに存在する通常の「&」連結記号に置き換えました。

乾杯

0
A Dwarf