Oracleの列値に基づいてテーブルを結合する

アルジュンR

のような列の値に基づいてテーブルを結合しようとしています(A&B)||(C&D)A&BとC&Dの結合を別々に作成できます。しかし、どうすればORその間条件を達成できますか?

[更新] A、B、C、およびDは、dummy_levelテーブルのlevel_idです。したがって、テーブルを結合するための基本ルールは(21 && 22)||です。(23 && 24)

私のテーブル構造は、


CREATE TABLE dummy_cust(
  id INT,
  NAME VARCHAR(50),
  age INT,
  country VARCHAR(50));

INSERT INTO dummy_cust VALUES (1,'KIM',23,'US');
INSERT INTO dummy_cust VALUES (2,'KOM',24,'US');
INSERT INTO dummy_cust VALUES (3,'KING',29,'US');
INSERT INTO dummy_cust VALUES (4,'RAM',29,'US');
INSERT INTO dummy_cust VALUES (5,'RAV',23,'US');
INSERT INTO dummy_cust VALUES (6,'KIV',25,'US');

CREATE TABLE dummy_level(
  id INT,
  level_id INT,
  STATUS VARCHAR(50));

INSERT INTO dummy_level VALUES (1,21,'C');
INSERT INTO dummy_level VALUES (1,22,'C');
INSERT INTO dummy_level VALUES (1,24,'C');
INSERT INTO dummy_level VALUES (2,22,'C');
INSERT INTO dummy_level VALUES (2,23,'C');
INSERT INTO dummy_level VALUES (2,24,'C');
INSERT INTO dummy_level VALUES (3,21,'Z');
INSERT INTO dummy_level VALUES (3,22,'Z');
INSERT INTO dummy_level VALUES (4,21,'Z');
INSERT INTO dummy_level VALUES (4,22,'Z');
INSERT INTO dummy_level VALUES (4,24,'Z');

期待される結果:


+ --- + ---- + --- + ------- + -------- + ------- + -------- + ------- + -------- + ------- + -------- + ------- +
| id  | name | age | country | Level ID | Status  | Level ID | Status  | Level ID | Status  | Level ID | Status  |
+ --- + ---- + --- + ------- + -------- + ------- + -------- + ------- + -------- + ------- + -------- + ------- +
| 1   | KIM  | 23  | US      | 21       | C       | 22       | C       |          |         | 24       | C       |
| 2   | KOM  | 24  | US      |          |         | 22       | C       | 23       | C       | 24       | C       |
| 3   | KING | 29  | US      | 21       | Z       | 22       | Z       |          |         |          |         |
| 4   | RAM  | 29  | US      | 21       | Z       | 22       | Z       |          |         | 24       | Z       |
+ --- + ---- + --- + ------- + -------- + ------- + -------- + ------- + -------- + ------- + -------- + ------- +


これを解決するのを手伝ってください。私はこれに慣れていないので、少し障害があります。私はこれを解決するためにここで助ける専門家をひどく必要としています。

ポンダースティボン

いくつかの値をピボットしているので、参加して使用するのが最も簡単ですpivot

select *
  from dummy_cust c 
  join dummy_level  l using (id)
  pivot (max(level_id) lvl, max(status) sts 
         for level_id in (21 as l21, 22 as l22, 23 as l23, 24 as l24) )
  order by id         

dbfiddleデモ

私があなたのコメントを正しく理解しているなら、あなたはそれらがレベル21と22の両方、またはレベル23と24の両方を持っているときに行を表示したいと思うでしょう。

select *
  from (
    select c.id, c.name, c.age, c.country, l.level_id, l.status,
           count(case level_id when 21 then 1 end) over (partition by c.id) c21,
           count(case level_id when 22 then 1 end) over (partition by c.id) c22,
           count(case level_id when 23 then 1 end) over (partition by c.id) c23,
           count(case level_id when 24 then 1 end) over (partition by c.id) c24
      from dummy_cust c 
      join dummy_level l on c.id = l.id )
  where (c21 > 0 and c22 > 0) or (c23 > 0 and c24 > 0)

次に、プレゼンテーションのピボットを作成できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

列の値に基づいて異なるテーブルを結合する

分類Dev

SQLServerの列値に基づいてテーブルを結合します

分類Dev

列のデータに基づいてテーブルの値を結合(加算)する必要がある

分類Dev

特定の列の値に基づいて2つのテーブルを結合する

分類Dev

列の値に基づいて日付が異なる2つのテーブルを結合しますか?

分類Dev

別のテーブルとの結合に基づいてテーブルの列値を更新しますか?

分類Dev

SQL Serverのメインテーブルの列の値に基づいてテーブルを結合するにはどうすればよいですか?

分類Dev

最高値に基づいて別のテーブルから結合する方法

分類Dev

自己結合を使用して、列の値に基づいてテーブルから行を削除します

分類Dev

SQL 内部結合に基づいてテーブルに列を追加する

分類Dev

行の値に基づいてテーブルを結合します

分類Dev

結合を使用して別のテーブルに基づいてmysqlの複数の値を更新する方法

分類Dev

1つの列値に基づいてSQLテーブルの複数の行を結合します

分類Dev

グループの最初の値に基づいて2つのテーブルを結合する方法

分類Dev

条件に基づいてMySQLテーブルを結合する

分類Dev

重複する値が独自の列を取得する 1 つの列に基づいて 2 つのテーブルを結合する

分類Dev

Mysqlは、結合テーブルに基づいて列の値を分割します

分類Dev

フィールドの部分文字列値に基づいて2つのテーブルを結合するにはどうすればよいですか?

分類Dev

2つの値に基づいてデータテーブルを結合する

分類Dev

条件SQLに基づいて2つのテーブルを結合する

分類Dev

条件に基づいてPythonで2つのテーブルを結合する

分類Dev

中間の日付に基づいてテーブルを結合するLinq

分類Dev

条件に基づいて複数のテーブルを結合する

分類Dev

Hiveの条件に基づいてテーブルを結合する

分類Dev

日付に基づいて2つのテーブルを結合する方法

分類Dev

同じテーブルの2つの列の結合に基づいて行を選択する方法

分類Dev

カンマ区切りの値に基づいてテーブルを結合する

分類Dev

mysqlの2つの列に基づいてテーブルを結合する方法は?

分類Dev

異なる列タイプに基づいて2つのテーブルを結合します

Related 関連記事

  1. 1

    列の値に基づいて異なるテーブルを結合する

  2. 2

    SQLServerの列値に基づいてテーブルを結合します

  3. 3

    列のデータに基づいてテーブルの値を結合(加算)する必要がある

  4. 4

    特定の列の値に基づいて2つのテーブルを結合する

  5. 5

    列の値に基づいて日付が異なる2つのテーブルを結合しますか?

  6. 6

    別のテーブルとの結合に基づいてテーブルの列値を更新しますか?

  7. 7

    SQL Serverのメインテーブルの列の値に基づいてテーブルを結合するにはどうすればよいですか?

  8. 8

    最高値に基づいて別のテーブルから結合する方法

  9. 9

    自己結合を使用して、列の値に基づいてテーブルから行を削除します

  10. 10

    SQL 内部結合に基づいてテーブルに列を追加する

  11. 11

    行の値に基づいてテーブルを結合します

  12. 12

    結合を使用して別のテーブルに基づいてmysqlの複数の値を更新する方法

  13. 13

    1つの列値に基づいてSQLテーブルの複数の行を結合します

  14. 14

    グループの最初の値に基づいて2つのテーブルを結合する方法

  15. 15

    条件に基づいてMySQLテーブルを結合する

  16. 16

    重複する値が独自の列を取得する 1 つの列に基づいて 2 つのテーブルを結合する

  17. 17

    Mysqlは、結合テーブルに基づいて列の値を分割します

  18. 18

    フィールドの部分文字列値に基づいて2つのテーブルを結合するにはどうすればよいですか?

  19. 19

    2つの値に基づいてデータテーブルを結合する

  20. 20

    条件SQLに基づいて2つのテーブルを結合する

  21. 21

    条件に基づいてPythonで2つのテーブルを結合する

  22. 22

    中間の日付に基づいてテーブルを結合するLinq

  23. 23

    条件に基づいて複数のテーブルを結合する

  24. 24

    Hiveの条件に基づいてテーブルを結合する

  25. 25

    日付に基づいて2つのテーブルを結合する方法

  26. 26

    同じテーブルの2つの列の結合に基づいて行を選択する方法

  27. 27

    カンマ区切りの値に基づいてテーブルを結合する

  28. 28

    mysqlの2つの列に基づいてテーブルを結合する方法は?

  29. 29

    異なる列タイプに基づいて2つのテーブルを結合します

ホットタグ

アーカイブ