SQL计算多列并将其结果与类别进行比较
下表为结果列i中的三列乘以过去七天的重量以显示结果,在这张表旁边还有一个类别,我想只显示三个类别中的一个,如果赠款总额和我写的代码相匹配,现在可以在一列中乘以分数并求和,但我想知道是否可以更改此代码以与类别进行比较 如图所示,在图中的框中有三个类别,级别列位于解释名称中 我想要的是,正如您所看到的,左框中的总数是56.5,现在它与右框中的>42.5值匹配,我希望我的sql代码给出下面的结果SQL计算多列并将其结果与类别进行比较,sql,oracle,Sql,Oracle,下表为结果列i中的三列乘以过去七天的重量以显示结果,在这张表旁边还有一个类别,我想只显示三个类别中的一个,如果赠款总额和我写的代码相匹配,现在可以在一列中乘以分数并求和,但我想知道是否可以更改此代码以与类别进行比较 如图所示,在图中的框中有三个类别,级别列位于解释名称中 我想要的是,正如您所看到的,左框中的总数是56.5,现在它与右框中的>42.5值匹配,我希望我的sql代码给出下面的结果 Score Category Interpretation 56.5
Score Category Interpretation
56.5 >42.5 High
我确实尝试了下面的代码,我需要对其进行一些修改,我想,目前我在图片的右框中没有针对这三个类别的另一个特定表格,如果不为类别创建表格就可以实现上述结果,如果创建另一个表格并加入,请告诉我方法
select (SUM (FCS_CEREALS_AND_TUBERS * 2) + SUM (FCS_PULSES * 3) +
SUM (FCS_VEGETABLES * 1) + SUM (FCS_FRUIT * 1) +
SUM (FCS_MEAT_AND_FISH * 4) + SUM (FCS_MILK * 4) +
SUM (FCS_SUGAR * 0.5) + SUM (FCS_OIL * 0.5)) AS RESULT
from TBL_FCS
看起来您有数据透视。如果原始表中的数据未插入,则处理此表。以下是您当前结构的解决方案:
with
weights(id, food_group, weight) as (
select 1, 'CEREALS AND TUBERS', 2 from dual union all
select 2, 'PULSES', 3 from dual union all
select 3, 'VEGETABLES', 1 from dual union all
select 4, 'FRUIT', 1 from dual union all
select 5, 'MEAT AND FISH', 4 from dual union all
select 6, 'MILK', 4 from dual union all
select 7, 'SUGAR', .5 from dual union all
select 8, 'OIL', .5 from dual )
select food_group, past_7_days, weight, result,
case when id is null and result <= 28 then 'Low'
when id is null and result between 28.5 and 42 then 'Normal'
when id is null and result >= 42.5 then 'High'
end as interpretation
from (
select food_group, past_7_days, weight, sum(past_7_days * weight) result, id
from (
select *
from tbl_fcs
unpivot (past_7_days for food_group in (
fcs_cereals_and_tubers as 'CEREALS AND TUBERS',
fcs_pulses as 'PULSES',
fcs_vegetables as 'VEGETABLES',
fcs_fruit as 'FRUIT',
fcs_meat_and_fish as 'MEAT AND FISH',
fcs_milk as 'MILK',
fcs_sugar as 'SUGAR',
fcs_oil as 'OIL')))
join weights using (food_group)
group by rollup((food_group, past_7_days, weight, id)))
order by id
您必须取消每个食物组的Pivot值,然后将其与重量相加并相乘。使用case-when添加group by rollup和条件解释。标记数据库名称。Oracle apex SQL命令