[英]Using Big Query SQL I can I achieve the following subtraction ( subtract two row values and replace it with that value )?
application![]() |
buildingid![]() |
dashboarding_tag ![]() |
value![]() |
---|---|---|---|
Abacus![]() |
BLD01 ![]() |
Heating_System_Energy_Consumption ![]() |
3000.00 ![]() |
Abacus![]() |
BLD02 ![]() |
Heating_System_Energy_Consumption ![]() |
1000.00 ![]() |
Abacus![]() |
BLD04 ![]() |
Heating_System_Energy_Consumption ![]() |
1000.00 ![]() |
Abacus![]() |
BLD05 ![]() |
Heating_System_Energy_Consumption ![]() |
500.00 ![]() |
Abacus![]() |
BLD02 ![]() |
MVHR_Energy_Consumption ![]() |
300.00 ![]() |
Abacus![]() |
BLD03 ![]() |
MVHR_Energy_Consumption ![]() |
900.00 ![]() |
Abacus![]() |
BLD04 ![]() |
MVHR_Energy_Consumption ![]() |
50.00 ![]() |
Abacus![]() |
BLD05 ![]() |
MVHR_Energy_Consumption ![]() |
80.00 ![]() |
Abacus![]() |
BLD06 ![]() |
MVHR_Energy_Consumption ![]() |
200.00 ![]() |
Forell![]() |
BLD07 ![]() |
Heating_System_Energy_Consumption ![]() |
0.00 ![]() |
Forell![]() |
BLD08 ![]() |
Heating_System_Energy_Consumption ![]() |
50.00 ![]() |
Forell![]() |
BLD09 ![]() |
Heating_System_Energy_Consumption ![]() |
-5.00 ![]() |
Forell![]() |
BLD10 ![]() |
Heating_System_Energy_Consumption ![]() |
-30.00 ![]() |
to到
application![]() |
buildingid![]() |
dashboarding_tag ![]() |
value![]() |
---|---|---|---|
Abacus![]() |
BLD01 ![]() |
Heating_System_Energy_Consumption ![]() |
3000.00 ![]() |
Abacus![]() |
BLD02 ![]() |
Heating_System_Energy_Consumption ![]() |
700.00 ![]() |
Abacus![]() |
BLD04 ![]() |
Heating_System_Energy_Consumption ![]() |
950.00 ![]() |
Abacus![]() |
BLD05 ![]() |
Heating_System_Energy_Consumption ![]() |
420.00 ![]() |
Abacus![]() |
BLD02 ![]() |
MVHR_Energy_Consumption ![]() |
300.00 ![]() |
Abacus![]() |
BLD03 ![]() |
MVHR_Energy_Consumption ![]() |
900.00 ![]() |
Abacus![]() |
BLD04 ![]() |
MVHR_Energy_Consumption ![]() |
50.00 ![]() |
Abacus![]() |
BLD05 ![]() |
MVHR_Energy_Consumption ![]() |
80.00 ![]() |
Abacus![]() |
BLD06 ![]() |
MVHR_Energy_Consumption ![]() |
200.00 ![]() |
Forell![]() |
BLD07 ![]() |
Heating_System_Energy_Consumption ![]() |
0.00 ![]() |
Forell![]() |
BLD08 ![]() |
Heating_System_Energy_Consumption ![]() |
50.00 ![]() |
Forell![]() |
BLD09 ![]() |
Heating_System_Energy_Consumption ![]() |
-5.00 ![]() |
Forell![]() |
BLD10 ![]() |
Heating_System_Energy_Consumption ![]() |
-30.00 ![]() |
Notice how the values in row 2,3 and 4 changed on table 2 based on values in row 5,7,8.请注意表 2 中第 2、3 和 4 行中的值如何根据第 5、7、8 行中的值进行更改。
The logic is, if the application is Abacus, then always replace the value of the Heating_System_Energy_Consumption such that:逻辑是,如果应用程序是 Abacus,则始终替换 Heating_System_Energy_Consumption 的值,以便:
Heating_System_Energy_Consumption=Heating_System_Energy_Consumption-MVHR_Energy_Consumption for each building Heating_System_Energy_Consumption=Heating_System_Energy_Consumption-MVHR_Energy_Consumption 每个建筑物
Consider below approach考虑以下方法
select * except(value),
if(dashboarding_tag = 'Heating_System_Energy_Consumption',
value - sum(if(dashboarding_tag = 'MVHR_Energy_Consumption', value, 0)) over(partition by application, buildingid),
value) as value
from your_table
if applied to sample data in your question - output is如果应用于您问题中的样本数据 - output 是
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.