Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sequence within SQL Select

Tags:

sql

oracle

I'm having a bit of a problem with using my sequence within a SELECT statement.

SELECT
     c.cust_name,
     c.site,
     customer_id_seq.nextval    
FROM
     customer c
WHERE
     c.customer_id IS NULL
ORDER BY
     c.site_code ASC
;

Is giving me an error:

  1. 00000 - "sequence number not allowed here" *Cause: The specified sequence number (CURRVAL or NEXTVAL) is inappropriate here in the statement. *Action: Remove the sequence number.

It's probably something obvious I'm doing wrong so hopefully this will be an easy answer.

like image 685
fras Avatar asked Aug 07 '09 14:08

fras


2 Answers

You cannot use sequences in queries with ORDER BY.

Remove the ORDER BY or put in into a subquery:

SELECT  q.*, customer_id_seq.nextval    
FROM    (
        SELECT  c.cust_name,
                c.site
        FROM    customer c
        WHERE   c.customer_id IS NULL
        ORDER BY
                c.site_code ASC
        ) q
like image 140
Quassnoi Avatar answered Sep 19 '22 13:09

Quassnoi


for IBM Imformix

In a SELECT statement, you cannot specify NEXTVAL or CURRVAL in the following contexts:

  • In the projection list when the DISTINCT keyword is used
  • In the WHERE, GROUP BY, or ORDER BY clauses
  • In a subquery
  • When the UNION operator combines SELECT statements
like image 40
KM. Avatar answered Sep 22 '22 13:09

KM.