Quiero definir variables antes de una tabla CTE y después de una tabla CTE porque algunas variables dependen del resultado de la tabla CTE. Por ejemplo
SET(K,B) = (5,2);
with my_data as (
-- data table as cte
select
1 as Key,
3 as Index,
10 as Value
union all
select
1,
5,
18
union all
select
1,
14,
4
union all
select
2,
2,
11
union all
select
2,
13,
24
union all
select
2,
29,
40
)
SELECT VALUE + $K
FROM my_data
Este ejemplo funciona perfectamente. Pero este código:
SET(K,B) = (5,2);
with my_data as (
-- data table as cte
select
1 as Key,
3 as Index,
10 as Value
union all
select
1,
5,
18
union all
select
1,
14,
4
union all
select
2,
2,
11
union all
select
2,
13,
24
union all
select
2,
29,
40
)
SET AVG_VAL = (SELECT AVG(VALUE) FROM my_data);
SELECT VALUE + $AVG_VAL
FROM my_data
no porque copo de nieve me da este error "Error de compilación de SQL: línea de error de sintaxis 34 en la posición 0 inesperado 'SET'". ¿Debería crear una tabla temporal para almacenar el resultado de esta consulta (SELECCIONAR PROMEDIO (VALOR) DE my_data) y luego incluir/usar esta tabla temporal para consultas futuras en lugar de una variable?
Solución del problema
Esto se puede hacer como en -
select * from d2;
+-----+-----+
| ID1 | ID2 |
|-----+-----|
| 1 | 2 |
| 100 | 2 |
| 3 | 4 |
| 300 | 4 |
+-----+-----+
Variable de ajuste -
set (var1) = (select sum(id2) from d2);
+----------------------------------+
| status |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
Usando variables -
select id1+$var1 from d2;
+-----------+
| ID1+$VAR1 |
|-----------|
| 13 |
| 112 |
| 15 |
| 312 |
+-----------+
No hay comentarios.:
Publicar un comentario