回答編集履歴

4 追加

A.Ichi

A.Ichi score 3946

2016/10/21 13:01  投稿

提示されている出力であれば下記にて取得できると思います。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード,
a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
さらに右に図書分類cとはなりません。
ご期待に沿えずにすみませんでした。思い付くところを修正してみました。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
```
分類の番号のバージョンを作成しました
```sql
select coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号 図書分類A, b.管理番号 図書分類B from
(select substr(管理番号,3), * from 図書テーブル where 分類='A') a
full join
(select substr(管理番号,3), * from 図書テーブル where 分類='B') b
using (substr) where coalesce(a.購入者コード,b.購入者コード)='00001' order by substr;
これだと下記の様になります。
購入者CD |図書分類A|図書分類B
----------+-------+-------
00001   | AA001 | BB001
00001   | AA002 | BB002
00001   |      | BB003
00001   | AA004 |
```
3 修正

A.Ichi

A.Ichi score 3946

2016/10/21 12:34  投稿

提示されている出力であれば下記にて取得できると思います。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード,
a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
さらに右に図書分類cとはなりません。
ご期待に沿えずにすみませんでした。思い付くところを修正してみました。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
2 修正

A.Ichi

A.Ichi score 3946

2016/10/21 12:34  投稿

提示されている出力であれば下記にて取得できると思います。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード,
a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
さらに右に図書分類cとはなりません。
ご期待に沿えずにすみませんでした。思い付くところを修正してみました。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号, b.管理番号 from
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
1 追加

A.Ichi

A.Ichi score 3946

2016/10/21 12:27  投稿

提示されている出力であれば下記にて取得できると思います。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード,
a.管理番号 図書分類A, b.管理番号 図書分類B from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from tosho where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```
さらに右に図書分類cとはなりません。
さらに右に図書分類cとはなりません。
ご期待に沿えずにすみませんでした。思い付くところを修正してみました。
```sql
SELECT coalesce(a.購入者コード,b.購入者コード) 購入者コード, a.管理番号, b.管理番号 from
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='A') a
FULL JOIN
(SELECT ROW_NUMBER() OVER (),購入者コード,管理番号 from (select * from 図書テーブル order by 管理番号) 図書テーブル where 分類='B') b
USING (row_number) WHERE coalesce(a.購入者コード,b.購入者コード)='00001';
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る