- PR -

select分について

1
投稿者投稿内容
コージ
常連さん
会議室デビュー日: 2005/07/29
投稿数: 39
投稿日時: 2005-07-29 17:52
select文で質問があります。
____________________
| 01 | a | a | 001 | ・・・・
| 01 | a | a | 002 | ・・・・
| 01 | a | a | 003 | ・・・・
| 01 | a | a | 004 | ・・・・
| 02 | b | b | 001 | ・・・・
| 02 | b | b | 002 | ・・・・
| 02 | b | b | 003 | ・・・・
| 02 | b | b | 004 | ・・・・ 

このようなテーブルがありカラム名は
左からcolumn1,2,3,4・・・とします。
column1,2,3,4はプライマリキーです。

このテーブルを使って表示したい結果が

01 a a 001 002 003 004

02 b b 001 002 003 004

とこのようにcolumn1,2,3と一致するcolumn4を
横に表示して1レコードにしたいんですが
どのようなselect文を書けば出来るでしょか?
よろしくお願いします。

とんくま
ベテラン
会議室デビュー日: 2005/08/02
投稿数: 56
お住まい・勤務地: 東京
投稿日時: 2005-08-02 15:12
DB2ですが、

CREATE TABLE V_H_Conv
(column1 DEC(2,0) NOT NULL
,column2 CHAR(1) NOT NULL
,column3 CHAR(1) NOT NULL
,column4 DEC(3,0) NOT NULL
);

SELECT DIGITS(column1) column1, column2, column3
, MAX(CASE rn WHEN 1 THEN DIGITS(column4) ELSE '' END)
|| ' ' || MAX(CASE rn WHEN 2 THEN DIGITS(column4) ELSE '' END)
|| ' ' || MAX(CASE rn WHEN 3 THEN DIGITS(column4) ELSE '' END)
|| ' ' || MAX(CASE rn WHEN 4 THEN DIGITS(column4) ELSE '' END)
|| ' ' || MAX(CASE rn WHEN 5 THEN DIGITS(column4) ELSE '' END) column4s
FROM (SELECT q.*
, ROWNUMBER() OVER(PARTITION BY column1, column2, column3
ORDER BY column4) rn
FROM V_H_Conv q) S
GROUP BY column1, column2, column3
ORDER BY column1, column2, column3
;
------------------------------------------------------------------------------

COLUMN1 COLUMN2 COLUMN3 COLUMN4S
------- ------- ------- -------------------
01 a a 001 002 003 004
02 b b 001 002 003 004

2 record(s) selected.
コージ
常連さん
会議室デビュー日: 2005/07/29
投稿数: 39
投稿日時: 2005-08-05 18:24
お答えいただきありがとうございます。
java,db2を使ったシステムで、今はjavaのロジックで何とかやってたんですが
使わせていただきます
1

スキルアップ/キャリアアップ(JOB@IT)