2014-01-30 2 views
5

Hier ist die Reihenfolge Schaffung Syntax verwendet:In Netezza Ich versuche, eine Sequenz in einer Case-Anweisung zu verwenden, aber die Sequenz Wert nicht erhöht nicht

CREATE SEQUENCE BD_ID_SEQ AS INTEGER 
    START WITH 999 
    INCREMENT BY 1 
    NO MINVALUE 
    NO MAXVALUE 
    NO CYCLE; 

ich eine Tabelle mit den folgenden Werten Datensätze:

 
b_id 
------- 
2547 
NULL 
2800 
NULL 
NULL 
NULL 
NULL 

ich betreibe die folgenden:

select case 
      when b_id is NULL then cast((select next value for bd_id_seq) as character varying(10)) 
      else b_id 
     end b_id 
from table1; 

das Ergebnis kommt:

 
b_id 
------- 
2547 
1000 
2800 
1000 
1000 
1000 
1000 

Ich erwarte:

 
2547 
1000 
2800 
1001 
1002 
1003 
1004 

Irgendwelche Ideen, warum im Fall Aussage die Sequenz nicht über den ersten Wert zu erhöhen scheint? Danke, Ginni

Antwort

6

Sie müssen ändern, wie Sie den nächsten Wert aufrufen. Entfernen Sie einfach den select und fordern Sie den nächsten Wert an. Wie unten.

select case 
      when b_id is NULL then cast((next value for bd_id_seq) as character varying(10)) 
      else b_id 
     end b_id 
from table1; 
+0

Warum ist das keine Antwort? Danke @Niedere – KalC

Verwandte Themen