[SQL] Colonne definite con case when e MAX in una nuova tabella

Messaggioda bad.alex » 19/09/2019, 20:22

Ciao ragazzi,

sto avendo qualche difficoltà a creare una tabella in SQL partendo da una preesistente (con colonne contenenti valori).
Ciò che vorrei fare è aggiungere a questa nuova tabella delle colonne, tre, in cui calcolo il massimo a seconda che siano verificate determinate condizioni. In particolare:

1) se time è compreso tra 1 e 3 definisco una variabile max_var_1_3 come max((-1)*var),
2) se time è compreso tra 1 e 6 definisco una variabile max_var_1_6 come max((-1)*var),
3) se time è compreso tra 1 e 12 definisco una variabile max_var_1_12 come max((-1)*var)

La funzione max serve a prendere il max valore della variabile var nella finestra temporale che va da 1 a 3.
Ciò che ho provato a fare sinora è il seguente:

Codice:
create table new as(
select t1.*,
  (case when time between 1 and 3 then MAX((-1)*var)
 else var
end) as max_var_1_3,
  (case when time between 1 and 6 then MAX((-1)*var)
 else var
end) as max_var_1_6,
  (case when time between 1 and 12 then MAX((-1)*var)
 else var
end) as max_var_1_12
from old_table t1
group by time
) with data primary index time

Inutile dire che non funziona. Si aspetta un 'qualcosa' tra ) e ','.
I miei dubbi sono tanti, in particolare sulla creazione di nuove colonne con case statements e con una funzione MAX di aggregazione.
Spero possiate aiutarmi.

Grazie,
Alex
bad.alex
Senior Member
Senior Member
 
Messaggio: 1124 di 1283
Iscritto il: 10/01/2007, 19:01

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite