我正在使用PL SQL developer和Oracle 11g。以下是我的问题:
编辑
它看起来像使用秩(按标头号划分,按日期排列行号)起作用。
我想要创建一个计数器,每次列有与上一列不同的值时都会进行更改。我需要能够在视图(不可修改的约束)中这样做。目标是使用此计数器在该视图中构建一个新的唯一键。因此,每次计划表中的行号发生变化时,我都需要重置“计数器”(见下文)。
我有三张桌子。在每个表下,我都放了一些重要的栏:
标题--标题编号(唯一)
细节--头号码(不是唯一的)--线条编号(唯一)
规划线--头号(不是唯一的)--线号(不是唯一的)--一些日期
在计划线表中,有多条线,每一行数也有。我想要构建成一个视图(这是一个约束,它必须是一个视图),能够从规划的行号构建一个唯一的编号。
以下是一些示例数据:
Header (1 row):
Header Number = 1
Detail (2 rows)
Header Number = 1, LineNumber = 1
Header Number = 1, LineNumber = 2
Planning (4 rows)
Header Number = 1, Line number = 1, date = 01/01/14
Header Number = 1, Line number = 1, date = 01/02/14
Header Number = 1, Line Number = 2, date = 01/01/14
Header Number = 1, Line Number = 2, date = 01/03/14我希望它看起来像这样:
HeaderNumber | Line Number | 'Counter' (What I am trying to create)
1 | 1 | 1
1 | 1 | 2
1 | 2 | 1
1 | 2 | 2以下是我所面临的一些最后问题:
它似乎不像我可以使用行号--视图将包含多个标题,更重要的是,行号似乎是从整个select的内容中构建出来的-因此我无法对其进行修剪。最后一行数为1,2,3,4 (上列)。
有没有人知道如何将其构建成一个select (放到视图中)?我知道这可以通过一个程序,但我真的需要一个看法。
致以敬意,
严重困惑的人
发布于 2014-04-16 16:43:52
我不知道你在说“行号”时到底试过什么--你是指ROWNUM还是row_number()?
这不是做你想做的吗?
select headernumber, linenumber,
row_number() over (partition by headernumber order by linenumber)
as counter
from ...;https://stackoverflow.com/questions/23114837
复制相似问题