- 締切済み
SQLで同じフィールドを2つ取りだしたい
以下のテーブルからCSVを出力する際、 ID | 名称 | コード1 | コード2 1 | A | 111 | 444 2 | B | 222 | 555 3 | C | 333 | 666 「ID/名称/コード1コード2」のように取りだす場合のSQL文は SELECT ID, 名称, コード1 || コード1 FROM テーブル名 となると思いますがこれを、「ID/名称コード1/名称コード2」のように同じフィールドを同じ行に2回登場させたい場合はどうすれば宜しいでしょうか。 SELECT ID, 名称 || コード1, 名称 || コード2 FROM テーブル名 とした場合にはエラーになってしまいます。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5241/13712)
> 取り出したい形式は「ID/名称コード1/名称コード2」ではなく「ID/名称コード1 名称コード2」でした。 問題無くSELECTできますよ。 test=# SELECT id, name || code1 || ' ' || name || code2 FROM test; id | ?column? ----+----------- 1 | A111 A444 2 | B222 B555 3 | C333 C666 (3 rows)
- luca20110205
- ベストアンサー率0% (0/2)
No.1の方がおっしゃっている通り、カラムのデータ型を確認しましょう。 例えば、NumericとCharをそのまま連結しようとすると、エラーになります。 質問する場合、エラーメッセージをそのまま載せた方が、的確な回答がつきます。 Numeric等を文字として連結したいのであれば、「TO_CHAR」等を試してはどうでしょうか。
- t_ohta
- ベストアンサー率38% (5241/13712)
まず、各カラムのデータ形式は何ですか? あと、エラーが出た際のエラーメッセージには何て書いてありますか? PostgreSQLカテゴリーなのでPostgreSQLで試してみましたが、エラーは出ませんでしたよ。 test=# create table test (id integer, name text, code1 text, code2 text); CREATE TABLE test=# insert into test (id, name, code1, code2) values (1,'A','111','444'); INSERT 0 1 test=# insert into test (id, name, code1, code2) values (2,'B','222','555'); INSERT 0 1 test=# insert into test (id, name, code1, code2) values (3,'C','333','666'); INSERT 0 1 test=# SELECT id, name, code1 || code2 FROM test; id | name | ?column? ----+------+---------- 1 | A | 111444 2 | B | 222555 3 | C | 333666 (3 rows) test=# SELECT id, name || code1, name || code2 FROM test; id | ?column? | ?column? ----+----------+---------- 1 | A111 | A444 2 | B222 | B555 3 | C333 | C666 (3 rows)
補足
回答ありがとうございます。 質問内容に誤りがございました。 取り出したい形式は「ID/名称コード1/名称コード2」ではなく「ID/名称コード1 名称コード2」でした。 エラーになったSQL文は以下の通りです。 SELECT ID, 名称 || コード1 || ' ' ||名称 || コード2 FROM テーブル名