sql - Oracle PIVOT,两次?

标签 sql oracle pivot oracle11g

我一直在尝试在 Oracle 11g 中不再使用 DECODE 来透视行,其中有一个方便的 PIVOT 函数。但我可能发现了一个限制:

我尝试为基表中的每个值返回 2 列。像这样的东西:

SELECT somethingId, splitId1, splitName1, splitId2, splitName2
FROM (SELECT somethingId, splitId
      FROM SOMETHING JOIN SPLIT ON ... )
      PIVOT ( MAX(splitId) FOR displayOrder IN (1 AS splitId1, 2 AS splitId2),
              MAX(splitName) FOR displayOrder IN (1 AS splitName1, 2 as splitName2)
            )

我可以用 DECODE 来做到这一点,但我无法通过语法来让我用 PIVOT 来做到这一点。这可能吗?看来这个函数处理起来并不太难。

编辑:StackOverflow 是否可能不是 SQL 问题的正确溢出?

编辑:有人在吗?

最佳答案

来自oracle-developer.net看来可以这样做:

SELECT somethingId, splitId1, splitName1, splitId2, splitName2
FROM (SELECT somethingId, splitId
      FROM SOMETHING JOIN SPLIT ON ... )
      PIVOT ( MAX(splitId)  ,
              MAX(splitName) 
              FOR displayOrder IN (1 AS splitName1, 2 as splitName2)
            )

关于sql - Oracle PIVOT,两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197802/

相关文章:

mysql - 如何列出员工每周是否记录时间

sql - ORACLE中的行到列

php - 每周检索数据

php - php中的SQL,使用LIKE进行部分搜索

sql - pl/sql - 集合可以遍历列名吗?

sql - 数据库:流水线函数

sql-server - 一组行的 MS SQL 字符串连接

sql - 有条件地插入到 Snowflake 中的表中

SQLite 和范围查询

oracle - 在 Oracle PL/SQL 中有没有办法导入包及其成员?