Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle връща същия псевдоним за различни случаи при избор

Ако приемем, че вашата подзаявка вече получава правилната стойност обратно и вие просто питате как да получите и двете стойности на „статия“ в една и съща колона, всичко, което трябва да направите, е да преместите подзаявката във втора when проверка в рамките на първия case израз, вместо като собствена колона:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     CASE
         WHEN list.list_value = 'Article' THEN tbl.values_column
         WHEN list.list_value = 'Paragraph' THEN (
             SELECT
                 values_column
             FROM
                 pro_table
             WHERE
                 pro_table.id_pro_table = tbl.parent
         )
     END AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list

Можете да замените подзаявката с ляво съединение обратно към същата таблица и да обедините резултатите:

SELECT
     tbl.parent,
     list.list_value,
     tbl.values_column,
     COALESCE (
         CASE
             WHEN list.list_value = 'Article' THEN tbl.values_column
         END,
         tbl2.values_column
     ) AS article,
     CASE
         WHEN list.list_value = 'Paragraph' THEN tbl.values_column
     END AS paragraph
 FROM
     pro_table tbl 
     LEFT JOIN list ON list.id_list = tbl.id_t_list
     LEFT JOIN pro_table tbl2 ON tbl2.id_pro_table = tbl.parent

... но това прави някои предположения относно йерархията, така че вероятно трябва да затегнете обединяването въз основа на типа списък.

db<>цигулка с измислени връзки между същите шест реда, които показахте, тъй като нямаме действителните идентификатори.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направите разделяне и ляво съединяване в Oracle

  2. Как да създадете потребител в Oracle 11g и да предоставите разрешения

  3. Как да показвам записи от таблица, подредени като в клаузата where?

  4. Как да инсталирате cx_Oracle на El Capitan

  5. Как да извикам SELECT през DBLINK през DBLINK?