【问题标题】:Oracle: Convert rows into columns for output of joined table queriesOracle:将行转换为列以输出连接表查询
【发布时间】:2019-08-02 16:18:32
【问题描述】:
SELECT ABC.ID, ABC.URL1, ABC.URL2,
DECODE(ABC.TEXT,'URL3' ,ABC.URL),
DECODE(ABC.TEXT,'URL4',ABC.URL),
DECODE(ABC.TEXT,'URL5',ABC.URL),
DECODE(ABC.TEXT,'URL6',ABC.URL),
DECODE(ABC.TEXT,'URL7',ABC.URL),
DECODE(ABC.TEXT,'URL8',ABC.URL),
DECODE(ABC.TEXT,'URL9',ABC.URL)
FROM (SELECT * FROM (SELECT t1.ID, t2.URL1, t2.URL2,
t4.TEXT AS TEXT, t3.URL AS URL
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.id=t2.id2 
LEFT JOIN table4 t3 ON t3.id=t2.id2
LEFT JOIN table4 t4 ON t3.id3=t4.id
WHERE t1.id='VALUE'))ABC;

我希望输出如下:

以及相应 columnst1 中这些 url 的值

【问题讨论】:

  • 我试过了,但是当我加入了多个表时它没有帮助。
  • @Abhinav 显示您尝试过的内容。如果连接多个表导致问题,您通常可以通过用括号括起来从连接中进行选择来解决它,例如select * from (select ... from a join b join c ...)
  • @BrianLeach 您可以在我粘贴在原始问题中的代码中看到我用括号括住了 sql。但它也对我不起作用。

标签: oracle oracle11g multiple-columns rows


【解决方案1】:

以下代码对我有用:

SELECT DEF.ID, DEF.URL1, DEF.URL2,
MAX(DECODE(ABC.TEXT,'URL3' ,ABC.URL)) URL3,
MAX(DECODE(ABC.TEXT,'URL4',ABC.URL)) URL4,
MAX(DECODE(ABC.TEXT,'URL5',ABC.URL)) URL5,
MAX(DECODE(ABC.TEXT,'URL6',ABC.URL)) URL6,
MAX(DECODE(ABC.TEXT,'URL7',ABC.URL)) URL7,
MAX(DECODE(ABC.TEXT,'URL8',ABC.URL)) URL8,
MAX(DECODE(ABC.TEXT,'URL9',ABC.URL)) URL9
FROM (SELECT * FROM (SELECT t1.ID, t2.URL1, t2.URL2,
t4.TEXT AS TEXT, t3.URL AS URL
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.id=t2.id2 
LEFT JOIN table4 t3 ON t3.id=t2.id2
LEFT JOIN table4 t4 ON t3.id3=t4.id
WHERE t1.id='VALUE')ABC) DEF
GROUP BY DEF.ID, DEF.URL1, DEF.URL2;

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多