0
我有一个表中,看起来像这样一个Oracle 11g数据库:甲骨文组和枢轴
ownerid | propertyid | name
--------------------------------------
1 | 1000001 | SMITH MARY
2 | 1000001 | SMITH JOHN
3 | 1000002 | HUGHES JANE
4 | 1000003 | CHEN ALICE
5 | 1000003 | MCCOY ELLIS
我想小组propertyid
表,并转动行列,以便它看起来像这样的:
propertyid | owner1 | owner2
---------------------------------------------
10001 | SMITH MARY | SMITH JOHN
10002 | HUGHES JANE | <null>
10003 | CHEN ALICE | MCCOY ELLIS
每个属性都可以有业主1和3之间,但我只在头两个,因为他们出现在ownerid
订货时感兴趣。
我最好的解决方案是创建两个子查询:“第一”所有者和另一个“第二”所有者之一。我用了nth_value
功能如下:
-- first owners
select
propertyid,
nth_value(name, 1) over (partition by propertyid order by ownerid) as owner_1
from owners
但是这给了我重复的(虽然是正确的)对性能和业主的业主如总数大于1。总的来说,我觉得必须有一个更好的这样做的方式。有没有人有任何想法?
这很好,我喜欢'inputs' =>'prep' =>工作模式。虽然我不得不承认,我一直在Google上搜索这些内容,认为它们是Oracle的真正功能:)谢谢! – Rob
我希望你找到了正确的答案(WITH子句,CTE,子查询保理......)我很早就学会了它,现在一直都在使用它,它使查询更容易阅读/遵循。很高兴帮助。干杯! – mathguy