GOOGLE ADS

martes, 3 de mayo de 2022

Configuración de variables en copo de nieve

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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...