質問編集履歴

4 sqlを追加

hj_zebra

hj_zebra score 10

2019/11/15 14:48  投稿

sql 同じテーブル内の副問合せ?
テーブル内のデータをIDと日付でまとめてVALの値を抽出したいです。
副問合せを使ってやるのではと考えています。
教えていただきたいです。
◆テーブル内
|ID|DATE|VAL_ID|VAL|
|:--|:--:|:--:|--:|
|1|20190101|10|aaa|
|1|20190101|20|bbb|
|1|20190101|30|ccc|
◆抽出したい内容
|ID|DATE|VAL10|VAL20|VAL30|
|:--|:--:|:--:|:--:|--:|
|1|20190101|aaa|bbb|ccc|
```試したsql
SELECT
T1.ID,
T1.DATE,
T1.VAL_ID AS VAL10
    (
        SELECT
            SUB1.VAL,
        FROM
            SUB1
        WHERE
        AND VAL_ID = '20'
    ) AS VAL20,
    (
        SELECT
            SUB2.VAL,
        FROM
            SUB2
        WHERE
        VAL_ID = '30'
    ) AS VAL30
FROM T1 
WHERE
T1.VAL_ID =  '10'
```
「単一行副問合せにより2つ以上の行が戻されます」
↑↑このようなエラーが出力されます。
テスト用sqlを記述したため間違いがあると思われますが
上のテーブル内容などを見てご理解していただければと思います。
```試したsql2
```
`試したsql2`
SELECT
T1.ID,
T1.DATE,
LISTAGG(VAL,',')WITHIN GROUP(order by VAL_ID) List_VAL
FROM T1
WHERE
(T1.VAL_ID = '10' OR T1.VAL_ID = '20' OR T1.VAL_ID = '30')
GROUP BY
T1.ID , T1.DATE
```
  • Oracle

    1108 questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

  • SQL

    5533 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

3 sqlを追加

hj_zebra

hj_zebra score 10

2019/11/15 14:46  投稿

sql 同じテーブル内の副問合せ?
テーブル内のデータをIDと日付でまとめてVALの値を抽出したいです。
副問合せを使ってやるのではと考えています。
教えていただきたいです。
◆テーブル内
|ID|DATE|VAL_ID|VAL|
|:--|:--:|:--:|--:|
|1|20190101|10|aaa|
|1|20190101|20|bbb|
|1|20190101|30|ccc|
◆抽出したい内容
|ID|DATE|VAL10|VAL20|VAL30|
|:--|:--:|:--:|:--:|--:|
|1|20190101|aaa|bbb|ccc|
```試したsql
SELECT
T1.ID,
T1.DATE,
T1.VAL_ID AS VAL10
    (
        SELECT
            SUB1.VAL,
        FROM
            SUB1
        WHERE
        AND VAL_ID = '20'
    ) AS VAL20,
    (
        SELECT
            SUB2.VAL,
        FROM
            SUB2
        WHERE
        VAL_ID = '30'
    ) AS VAL30
FROM T1 
WHERE
T1.VAL_ID =  '10'
```
「単一行副問合せにより2つ以上の行が戻されます」
↑↑このようなエラーが出力されます。
テスト用sqlを記述したため間違いがあると思われますが
上のテーブル内容などを見てご理解していただければと思います。
上のテーブル内容などを見てご理解していただければと思います。
```試したsql2
SELECT
T1.ID,
T1.DATE,
LISTAGG(VAL,',')WITHIN GROUP(order by VAL_ID) List_VAL
FROM T1
WHERE
(T1.VAL_ID = '10' OR T1.VAL_ID = '20' OR T1.VAL_ID = '30')
GROUP BY
T1.ID , T1.DATE
```
  • Oracle

    1108 questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

  • SQL

    5533 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

2 タグを追加

hj_zebra

hj_zebra score 10

2019/11/15 13:45  投稿

sql 同じテーブル内の副問合せ?
テーブル内のデータをIDと日付でまとめてVALの値を抽出したいです。
副問合せを使ってやるのではと考えています。
教えていただきたいです。
◆テーブル内
|ID|DATE|VAL_ID|VAL|
|:--|:--:|:--:|--:|
|1|20190101|10|aaa|
|1|20190101|20|bbb|
|1|20190101|30|ccc|
◆抽出したい内容
|ID|DATE|VAL10|VAL20|VAL30|
|:--|:--:|:--:|:--:|--:|
|1|20190101|aaa|bbb|ccc|
```試したsql
SELECT
T1.ID,
T1.DATE,
T1.VAL_ID AS VAL10
    (
        SELECT
            SUB1.VAL,
        FROM
            SUB1
        WHERE
        AND VAL_ID = '20'
    ) AS VAL20,
    (
        SELECT
            SUB2.VAL,
        FROM
            SUB2
        WHERE
        VAL_ID = '30'
    ) AS VAL30
FROM T1 
WHERE
T1.VAL_ID =  '10'
```
「単一行副問合せにより2つ以上の行が戻されます」
↑↑このようなエラーが出力されます。
テスト用sqlを記述したため間違いがあると思われますが
上のテーブル内容などを見てご理解していただければと思います。
  • SQL

    5533 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • Oracle

    1108 questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

1 sql

hj_zebra

hj_zebra score 10

2019/11/15 13:38  投稿

sql 同じテーブル内の副問合せ?
テーブル内のデータをIDと日付でまとめてVALの値を抽出したいです。
副問合せを使ってやるのではと考えています。
教えていただきたいです。
◆テーブル内
|ID|DATE|VAL_ID|VAL|
|:--|:--:|:--:|--:|
|1|20190101|10|aaa|
|1|20190101|20|bbb|
|1|20190101|30|ccc|
◆抽出したい内容
|ID|DATE|VAL10|VAL20|VAL30|
|:--|:--:|:--:|:--:|--:|
|1|20190101|aaa|bbb|ccc|
```試したsql
SELECT
T1.ID,
T1.DATE,
T1.VAL_ID AS VAL10
    (
        SELECT
            SUB1.VAL,
        FROM
            SUB1
        WHERE
        AND VAL_ID = '20'
    ) AS VAL20,
    (
        SELECT
            SUB2.VAL,
        FROM
            SUB2
        WHERE
        VAL_ID = '30'
    ) AS VAL30
FROM T1 T1.VAL_ID =  '10'
FROM T1 
WHERE
T1.VAL_ID =  '10'
```
「単一行副問合せにより2つ以上の行が戻されます」
↑↑このようなエラーが出力されます。
テスト用sqlを記述したため間違いがあると思われますが
上のテーブル内容などを見てご理解していただければと思います。
  • SQL

    5533 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

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