Oracle 分区超过行数时出错
我正在创建一个子查询来选择某一列上的不同条目,DIS_COL,然后返回这些不同条目的所有其他列,任意选择第一行 为此,我创建了一个子查询,使用over-partitionby只选择第一行,然后从该子查询中进行选择 但是,我的代码有一个错误;“ORA-00923:FROM关键字未在预期位置找到” 我的代码如下:Oracle 分区超过行数时出错,oracle,Oracle,我正在创建一个子查询来选择某一列上的不同条目,DIS_COL,然后返回这些不同条目的所有其他列,任意选择第一行 为此,我创建了一个子查询,使用over-partitionby只选择第一行,然后从该子查询中进行选择 但是,我的代码有一个错误;“ORA-00923:FROM关键字未在预期位置找到” 我的代码如下: select * from ( select *, row_number() over (partition by DIS_COL order by COL_2)
select *
from (
select *,
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE
) as rows
where row_number = 1
AND CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2';
如何更正代码以达到预期的结果
我正在处理Oracle数据库。这不是行号,而是
*,
向子查询添加别名:
select *
from (
select T.*, -- here
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE
)T as rows -- and here
where row_number = 1
AND CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2';
这不是行号,而是
*,
向子查询添加别名:
select *
from (
select T.*, -- here
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE
)T as rows -- and here
where row_number = 1
AND CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2';
这不是行号,而是
*,
向子查询添加别名:
select *
from (
select T.*, -- here
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE
)T as rows -- and here
where row_number = 1
AND CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2';
这不是行号,而是
*,
向子查询添加别名:
select *
from (
select T.*, -- here
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE
)T as rows -- and here
where row_number = 1
AND CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2';
将
作为行删除
。表/查询别名的语法不正确。它是列别名的语法
select *
from (
select T.*,
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE t
)
where row_number = 1
AND (CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2');
将
作为行删除
。表/查询别名的语法不正确。它是列别名的语法
select *
from (
select T.*,
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE t
)
where row_number = 1
AND (CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2');
将
作为行删除
。表/查询别名的语法不正确。它是列别名的语法
select *
from (
select T.*,
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE t
)
where row_number = 1
AND (CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2');
将
作为行删除
。表/查询别名的语法不正确。它是列别名的语法
select *
from (
select T.*,
row_number() over (partition by DIS_COL order by COL_2) as row_number --ORDER BY FIELD DETERMINES WHICH ROW IS THE FIRST ROW AND THUS WHICH ONE IS SELECTED.
from MY_TABLE t
)
where row_number = 1
AND (CRITERIA_COL = 'CRIT_1'
OR CRITERIA_COL_2 = 'CRIT_2');
谢谢,这很有道理。不幸的是,我现在在“as行”中的“as”上遇到了一个“sql命令未正确结束”错误。不知道为什么。我尝试过明确地命名子查询中的所有列(例如,T.DIS_COL),但这不起作用。你知道我遗漏了什么吗?我不确定Oracle中的“显式命名”是什么(我在google中没有找到),你能提供更多关于你想要实现什么的信息吗?因为如果只是运行查询,根本不需要“作为行”。谢谢,这很有意义。不幸的是,我现在在“as行”中的“as”上遇到了一个“sql命令未正确结束”错误。不知道为什么。我尝试过明确地命名子查询中的所有列(例如,T.DIS_COL),但这不起作用。你知道我遗漏了什么吗?我不确定Oracle中的“显式命名”是什么(我在google中没有找到),你能提供更多关于你想要实现什么的信息吗?因为如果只是运行查询,根本不需要“作为行”。谢谢,这很有意义。不幸的是,我现在在“as行”中的“as”上遇到了一个“sql命令未正确结束”错误。不知道为什么。我尝试过明确地命名子查询中的所有列(例如,T.DIS_COL),但这不起作用。你知道我遗漏了什么吗?我不确定Oracle中的“显式命名”是什么(我在google中没有找到),你能提供更多关于你想要实现什么的信息吗?因为如果只是运行查询,根本不需要“作为行”。谢谢,这很有意义。不幸的是,我现在在“as行”中的“as”上遇到了一个“sql命令未正确结束”错误。不知道为什么。我尝试过明确地命名子查询中的所有列(例如,T.DIS_COL),但这不起作用。你知道我遗漏了什么吗?我不确定Oracle中的“显式命名”是什么(我在google中没有找到),你能提供更多关于你想要实现什么的信息吗?因为如果只是运行查询,则根本不需要“作为行”。