我试图在此处开发已接受答案的Oracle SQL版本:
Return row of every n'th record
到目前为止我所拥有的是:
SELECT ROW_ID, CUST_ACCT_SITE_ID
FROM
(
SELECT CUST_ACCT_SITE_ID as CUST_ACCT_SITE_ID, ROW_NUMBER() OVER (ORDER BY CUST_ACCT_SITE_ID) AS ROW_ID
FROM XXDMX_VOICE_CUSTOMERS_TBL
) AS t
WHERE ROW_ID % 10000 = 0
ORDER BY CUST_ACCT_SITE_ID;
我收到错误
ERROR ORA-00933:SQL命令未正确结束
我尝试了很多变化,无法想到我做错了什么。任何想法,Oracle专家?
答案 0 :(得分:2)
尝试编写如下查询:
SELECT rn, CUST_ACCT_SITE_ID
FROM (SELECT CUST_ACCT_SITE_ID as CUST_ACCT_SITE_ID,
ROW_NUMBER() OVER (ORDER BY CUST_ACCT_SITE_ID) AS rn
FROM XXDMX_VOICE_CUSTOMERS_TBL
) t
WHERE mod(rn, 10000) = 0
ORDER BY CUST_ACCT_SITE_ID;
主要区别在于删除了表别名的as
。 Oracle不允许这种语法。我还将row_id
更改为其他内容,因为" rowid"在Oracle中意味着什么,它的使用可能会令人困惑(参见here)。
答案 1 :(得分:1)
在PL / SQL(" Oracle SQL"的名称)中,模数运算符使用以下语法:
WHERE MOD(ROW_ID, 10000) = 0