• 締切済み

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 テーブル名 とした場合にはエラーになってしまいます。 宜しくお願い致します。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.3

> 取り出したい形式は「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)

回答No.2

No.1の方がおっしゃっている通り、カラムのデータ型を確認しましょう。 例えば、NumericとCharをそのまま連結しようとすると、エラーになります。 質問する場合、エラーメッセージをそのまま載せた方が、的確な回答がつきます。 Numeric等を文字として連結したいのであれば、「TO_CHAR」等を試してはどうでしょうか。

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.1

まず、各カラムのデータ形式は何ですか? あと、エラーが出た際のエラーメッセージには何て書いてありますか? 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)

kazuhiy
質問者

補足

回答ありがとうございます。 質問内容に誤りがございました。 取り出したい形式は「ID/名称コード1/名称コード2」ではなく「ID/名称コード1 名称コード2」でした。 エラーになったSQL文は以下の通りです。 SELECT ID, 名称 || コード1 || ' ' ||名称 || コード2 FROM テーブル名

関連するQ&A