非常感谢您提供的所有解决方案,因为当时间允许时,我会去现场并尝试自己解决它,所以以这种方式我也学习。
我使用SQL Server 2022和Oracle 21 c。
每次我发现一个有趣的问题,如果提供的解决方案只适用于SQL Server,我都会尝试将其适应Oracle,反之亦然。
现在我需要你的帮助,请,解决一个问题,但特别是理解,因为不幸的是,在这种情况下,我不明白我还应该做什么,在甲骨文有同样的解决方案。
我离开了几天前发布的以下问题SQL Server - Checking for integer (id) within hierarchy of ids,解决方案在Sql Server中。
不幸的是,在我适应了Oracle之后,在某些地方我没有得到同样的结果。
如果不对脚本进行任何更改,并按location_id对asc进行排序,那么直到location_id 6(包括location_id=6),一切都是正确的,然后一切都是错误的。
在递归部分中,我修改并将partition by tree1.location_order放在那个row_number中,除了location_id=10我一直试图改变之外,结果还可以,但是为了解决location_id =10,我在递归部分中通过tree1.location_id desc排序。location_id = 10可以解决这个问题,但location_id = 6时出现了错误,一切都变得混乱了。我相信解决方案在于row_number的递归排序。
我无法以某种方式将信息联系起来,逻辑上理解背后发生的事情(我没有太多经验),并将从row_number --order by b.location_order,tree1.location_id的排序可视化
我还补充说,RNPROB认为,也许我会更好地理解。
我为SQL Server 2022 https://dbfiddle.uk/r-QXHGJJ创建了具有所需输出的db fiddle,并为Oracle https://dbfiddle.uk/tRhdk0X3创建了db fiddle(不幸的是,这里的db fiddle插入部分给出了一个错误,但在Oracle中它工作正常)
谢谢你的好意
期望的输出。在小提琴是适当地命令期望的输出。我很抱歉它看起来像下面。
location_id parent_id level location_order location_name location_name_hierarchy row_number_hierarchy location_id_hierarchy
1 NULL 0 1 Location 1 Location 1 1 1
2 1 1 2 Location 2 Location 1/Location 2 1/2 1/2
3 1 1 1 Location 3 Location 1/Location 3 1/1 1/3
4 1 1 3 Location 4 Location 1/Location 4 1/3 1/4
5 2 2 1 Location 5 Location 1/Location 2/Location 5 1/2/1 1/2/5
6 5 3 1 Location 6 Location 1/Location 2/Location 5/Location 6 1/2/1/1 1/2/5/6
7 2 2 2 Location 7 Location 1/Location 2/Location 7 1/2/2 1/2/7
8 7 3 1 Location 8 Location 1/Location 2/Location 7/Location 8 1/2/2/1 1/2/7/8
9 3 2 1 Location 9 Location 1/Location 3/Location 9 1/1/1 1/3/9
10 9 3 1 Location 10 Location 1/Location 3/Location 9/Location 10 1/1/1/1 1/3/9/10
11 4 2 2 Location 11 Location 1/Location 4/Location 11 1/3/2 1/4/11
12 4 2 1 Location 12 Location 1/Location 4/Location 12 1/3/1 1/4/12
字符串
1条答案
按热度按时间pkbketx91#
用途:
字符串
这将使您的查询:
型
哪些输出:
| 父ID|尼维尔|位置_订单|位置_名称|位置_名称_层级|行号层次结构|RNPROB|位置_ID_层级| LOCATION_ID_HIERARCHY |
| --|--|--|--|--|--|--|--| ------------ |
| * 空 *| 0个|一个|地点1|地点1|一个|一个|一个| 1 |
| 一个|一个|二个|地点2|位置1/位置2| 1/2|二个|1/2| 1/2 |
| 一个|一个|一个|地点3|位置1/位置3| 1/1|一个|1/3| 1/3 |
| 一个|一个|三个|地点4|位置1/位置4| 1/3|三个|四分之一| 1/4 |
| 二个|二个|一个|地点5|位置1/位置2/位置5| 1/2/1|一个|1/2/5| 1/2/5 |
| 五个|三个|一个|地点6|位置1/位置2/位置5/位置6| 1/2/1/1|一个|1/2/5/6| 1/2/5/6 |
| 二个|二个|二个|地点7|位置1/位置2/位置7| 1/2/2|二个|1/2/7| 1/2/7 |
| 七个|三个|一个|地点8|位置1/位置2/位置7/位置8| 1 2 2 1|一个|1/2/7/8| 1/2/7/8 |
| 三个|二个|一个|地点9|位置1/位置3/位置9| 1/1/1|一个|1/3/9| 1/3/9 |
| 九个|三个|一个|地点10|位置1/位置3/位置9/位置10| 1/1/1/1|一个|10年1月3日9日| 1/3/9/10 |
| 四个|二个|二个|地点11|位置1/位置4/位置11| 1/3/2|二个|十一年四月一日| 1/4/11 |
| 四个|二个|一个|地点12|位置1/位置4/位置12| 1/3/1|一个|2012年1月4日| 1/4/12 |
fiddle