PDA

View Full Version : [SQL] Come fare una Select che incrementi un valore...


petitof
07-09-2004, 13:33
Io seleziono dei campi da una tabella, ma vorrei che nel risultato (che vado a scrivere in un file) ci sia una colonna con un progressivo:

Es:

Progressivo tel Casa tel Cell
1 xxxxxxxxxx xxxxxxx
2
3
4
5
6

cionci
07-09-2004, 15:08
Questa cosa è sfiziosa....

Vediamo...database su cui vuoi fare questa cosa ?

petitof
07-09-2004, 15:23
Db2.......


sai che forse ho la soluzione! (me l'hanno inviata per email!)

INSERT INTO TAB (IDOBJECT, ) SELECT MAX(IDOBJECT)+1, FROM PISYSTEMPROPERTIES;

..però è solo in inserimento...

ora la provo!

di_emme
07-09-2004, 16:32
come ti hanno già detto è sufficiente nella stringa SQL inserire + 1 ;)

SELECT CAMPOVALORE+1 FROM TABELLA

cionci
07-09-2004, 16:35
Ma se CAMPOVALORE non esiste in TABELLA ?

di_emme
07-09-2004, 16:39
intendi dire 'come si comporta nel caso in cui SELECT CAMPOVALORE da 0?'

nel caso in cui SELECT CAMPOVALORE da 0 il risultato di SELECT CAMPOVALORE + 1 da 1...

Se invece il campo non esiste in tabella... amico, hai sbagliato la query!!! :eek: :D :D :D

cionci
07-09-2004, 16:42
Appunto...era quello che voleva il nostro amico ;)

Data TABELLA così:

Campo1 Campo2 Campo3
xxxx
xxxx
xxxx

Voleva ottenere
CONT Campo1 Campo2 Campo3
1 xxxxx
2 xxxxx
3 xxxxx

di_emme
07-09-2004, 16:42
alt... aspetta... mi sa che sono io che non ho capito una ciolla... :eek:

di_emme
07-09-2004, 16:44
Originariamente inviato da cionci
Appunto...era quello che voleva il nostro amico ;)

Data TABELLA così:

Campo1 Campo2 Campo3
xxxx
xxxx
xxxx

Voleva ottenere
CONT Campo1 Campo2 Campo3
1 xxxxx
2 xxxxx
3 xxxxx
...ecco, appunto... non avevo capito una ciolla... :mc:

Nightingale
07-09-2004, 21:11
Originariamente inviato da petitof
Db2.......


sai che forse ho la soluzione! (me l'hanno inviata per email!)

INSERT INTO TAB (IDOBJECT, ) SELECT MAX(IDOBJECT)+1, FROM PISYSTEMPROPERTIES;

..però è solo in inserimento...

ora la provo!

direi che in inserimento va più che bene! :) Ammesso e concesso che su db2 sia supportata come sintassi (io db2 non l'ho mai visto).

Quello che non capisco è cosa intendi con "...è solo in inserimento". In una SELECT ti tiri su il campo così come è, no? Mentre in UPDATE puoi fare la stessa cosa con una subquery....

kingv
07-09-2004, 22:01
Originariamente inviato da petitof
Db2.......


finalmente qualcuno che usa database e non giocattoli :D

SELECT ROW_NUMBER() OVER (ORDER BY CHIAVE ASC) AS CONT,
COLONNA1, COLONNA2 FROM TABELLA


se non fosse corretto dai un occhio alla documentazione per la sintassi, ma sono sicuro che e' quello che cerchi :O

kingv
07-09-2004, 22:07
Originariamente inviato da petitof
Db2.......




aspe', orrido dubbio... non intenderai mica DB2/390 o DB2/400 ???? :eek:


se non ricordo male la sintassi che ti ho indicato prima non e' supportata (nè mai lo sarà al ritmo con cui implementano su quelle piattaforme).

mailand
08-09-2004, 11:27
ho testato su db2/400 ma mi sembra che la tua non giri king... :boh: ;)
non so se mi manchi qualche ptf... :D che forse uscirà nel 2012...

petitof
08-09-2004, 11:29
la insert non mi funziona!
la tua select in effetti era la query che cercavo fin dal principio!!




select ROW_NUMBER() OVER (ORDER BY CHIAVE ASC) AS CONT,dwdstiuf,ROW_NUMBER() OVER (ORDER BY CHIAVE ASC) AS CONT,dwdstita,'2004-00:00:00' from dwatkta order by dwprukey


però mi va in errore...."CHIAVE" cosa sarebbe?

SQL0206N "CHIAVE" is not valid in the context where it is used.
SQLSTATE=42703


ciao!

ah.. ho installato db2 v8 della ibm su piattaforma windows...

petitof
08-09-2004, 11:55
grazie kingv!!

dal sito della ibm:


SELECT ROW_NUMBER() OVER(), TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA='DB2ADMIN'

1 TABNAME
-------------------------------------------
1 CONSECUTIVE_NUMS
2 DATES
3 EXPLAIN_ARGUMENT
4 EXPLAIN_INSTANCE
5 EXPLAIN_OBJECT
6 EXPLAIN_OPERATOR
7 EXPLAIN_PREDICATE
8 EXPLAIN_STATEMENT
9 EXPLAIN_STREAM
10 SALES_DETAIL
11 SALES_DETAIL_CLS
11 record(s) selected.



:sofico:

kingv
08-09-2004, 12:55
Originariamente inviato da mailand
ho testato su db2/400 ma mi sembra che la tua non giri king... :boh: ;)
non so se mi manchi qualche ptf... :D che forse uscirà nel 2012...



leggi bene le mie risposte, ho detto che su as400 o s390 nn funziona. ;)

kingv
08-09-2004, 12:56
Originariamente inviato da petitof


però mi va in errore...."CHIAVE" cosa sarebbe?




le colnne chiave della tabella che stai selezionando.

non ricordo bene la sintassi ma ho visto che hai trovato da solo ;)

mailand
08-09-2004, 13:33
Originariamente inviato da kingv
leggi bene le mie risposte, ho detto che su as400 o s390 nn funziona. ;)

le avevo lette, difatti ho fatto il test x conferma! sennò le faccette che le mettevo a fare? avevo giusto qui un as400 a fare una cippa... :sofico: :sofico: :sofico: :D

kingv
08-09-2004, 16:05
Originariamente inviato da mailand
avevo giusto qui un as400 a fare una cippa... :D



:nonsifa:

se non avete niente da fare (tu e lui) potresti sempre metterti a lavorare al porting per as400 di doom3 :O :muro:

mailand
08-09-2004, 16:18
si in emulazione terminale 5250... :sofico: