我一直在尝试在 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/