SQL-如何按行数仅选择特定行之前的行
我很难构造SQL查询来将文件加载到数据库中 假设我的文件如下所示:SQL-如何按行数仅选择特定行之前的行,sql,database,Sql,Database,我很难构造SQL查询来将文件加载到数据库中 假设我的文件如下所示: col1 col2 col3 col4 a b c d e f g h end null null null no interesting data here not interested in this bla bla bla bla 我只想选择“结束”行之前的行。因此: col1 c
col1 col2 col3 col4
a b c d
e f g h
end null null null
no interesting data here
not interested in this
bla bla bla bla
我只想选择“结束”行之前的行。因此:
col1 col2 col3 col4
a b c d
e f g h
对于我的应用程序来说,结尾行及其后的行都不有趣。对于我们需要加载的每个文件,结束行的行号不同。所以我不能用计数器或最上面的语句来做这个
我该怎么办
我想我需要在WHERE条款中注意以下事项:
SELECT *
FROM data
WHERE rownumber < endrownumber
我被困的地方如下:
如何查找col1='end'作为endrownumber的rownumber
如何仅选择rownumberT以下内容将得到您想要的结果:
WITH view_1 AS (
SELECT
ROW_NUMBER() OVER(
ORDER BY
col_1
) AS row_num,
col_1,
col_2,
col_3,
col_4
FROM
your_table
)
SELECT
*
FROM
view_1
WHERE
row_num < (
SELECT
row_num
FROM
view_1
WHERE
col_1 = 'end'
);
我已经创建了一个视图,它将为每一行提供一个行号,并显示为一个新列
然后就在下面查询视图,以检查col_1上面的行号是什么,col_1='end'
然后,它将只通过比它小的行
我正在使用Oracle完成上述所有工作,并按预期工作。您提到这是一个文件。我想你是在把它插入数据库?你到底是如何读取文件的?提示:当你在最后一行打上句号时,只需用你正在使用的数据库停止标记你的问题。