こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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 テーブル名

とした場合にはエラーになってしまいます。
宜しくお願い致します。

投稿日時 - 2012-11-30 14:50:52

QNo.7822965

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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)

投稿日時 - 2012-11-30 17:26:46

ANo.2

No.1の方がおっしゃっている通り、カラムのデータ型を確認しましょう。

例えば、NumericとCharをそのまま連結しようとすると、エラーになります。
質問する場合、エラーメッセージをそのまま載せた方が、的確な回答がつきます。

Numeric等を文字として連結したいのであれば、「TO_CHAR」等を試してはどうでしょうか。

投稿日時 - 2012-11-30 15:31:00

ANo.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)

投稿日時 - 2012-11-30 15:02:20

補足

回答ありがとうございます。
質問内容に誤りがございました。

取り出したい形式は「ID/名称コード1/名称コード2」ではなく「ID/名称コード1 名称コード2」でした。

エラーになったSQL文は以下の通りです。


SELECT
ID,
名称 || コード1 || ' ' ||名称 || コード2
FROM テーブル名

投稿日時 - 2012-11-30 16:12:03

あなたにオススメの質問