Caso di Dichiarazione Illegale Espressione SQL

0

Domanda

Non capisco dove il messaggio di errore 'Illegale espressione QUANDO clausola di CASO di espressione" viene dall'mediante l'esecuzione di questo frammento di codice nella Teradata SQL

CASE 
  WHEN f_ev1.PROCESS_NO IN 
    (
      SELECT
        numbers.PROCESS_NO
      FROM numbers
      WHERE 
        numbers.FLAG = 1
      GROUP BY 1 --no duplicates
    ) THEN 2
END AS Status,

Se mi scrivi IN (alcuni numeri) funziona bene. Ma è un elenco che si compone di 50 unici valori che possono cambiare nel tempo.

case sql teradata
2021-11-16 11:32:54
1

Migliore risposta

0

Il mio Suggerimento è che si può caricare il cinquanta valori in un'altra tabella e si può partecipare a quel tavolo con la tabella principale

table_50 - Tabella con 50 valori univoci main_tbl - tabella Principale

insert into table_50 ( process_no ) SELECT numbers.PROCESS_NO FROM numbers WHERE numbers.FLAG = 1 GROUP BY 1 ;

Select case when b.process_no is null then 2  end as status from main_table a
left join table_50 b
on a.process_no= b.process_no

Da un punto di vista delle prestazioni, questo è più efficace e si può anche aggiornare i valori della table_50 secondo il vostro requisito

2021-11-23 13:08:01

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................