我使用两个表连接在一起生成一个新表,其中包含两个字段“预测”和“关闭”的总和,以及它的元数据。
我的问题是,因为我有一个条件,如果值是'Green‘,那么就插入一个'-’符号。直观地,当我对该列进行和时,它会给出一个错误“表达式必须具有与相应表达式”相同的数据类型。是否有一种方法可以在我的脚本中编写一个case语句来规避这个问题,或者有一个不同的解决方案?
Table1:
chart_date | FLAG | MESSAGING | FORECAST | CLOSED
21-JUL-20 NULL BLUE 10 10
22-JUL-20 NULL BLUE 10 20
23-JUL-20 NULL BLUE 10 106
21-JUL-20 NULL GREEN - 356
22-JUL-20 NULL GREEN - 457
23-JUL-20 NULL GREEN - 65
21-JUL-20 NULL RED 5 13
22-JUL-20 NULL RED 5 223
23-JUL-20 NULL RED 5 11表2-它保存我们的静态数据:
chart_date | FLAG | HEADER | METRIC | FORECAST
20-JUL-20 1 TYPE BLUE 0
20-JUL-20 8 TYPE GREEN 0
20-JUL-20 9 TYPE RED 0 这里是我使用的代码:
with t2
as (
select
b.flag,
b.metric messaging,
NVL(a.INCOMING,0) INCOMING,
case when b.metric in
('GREEN'
) then '-'
else to_char((NVL(round(a.Forecast,0),0))) end as Forecast
from
DB1.TABLE2 b
inner join
DB1.TABLE1 a
on (a.messaging=b.metric)
where b.header='MESSAGING'
and a.messaging in ('RED','GREEN','BLUE' )
)
select flag,messaging, SUM(NVL(INCOMING,0)) AS CLOSED_SUM, SUM(NVL(FORECAST,0)) as FORECAST_SUM
from t2 group by flag, messaging, FORECAST
union
select
a.flag,a.metric,0,'0'
from DB1.TABLE2 a
left join
t2
on (t2.messaging=a.metric)
where t2.messaging is null
and a.header like 'MESSAGING'
and a.metric in ('RED','GREEN','BLUE' ),这是我得到的错误消息:
ORA-01790: expression must have same datatype as corresponding expression
01790. 00000 - "expression must have same datatype as corresponding expression"
*Cause:
*Action:
Error at Line: 24 Column: 57如您所见,它按日期输出每个类型,但不分组创建sum列。
--这是我想要的输出:
FLAG | MESSAGING | FORECAST_SUM | CLOSED_SUM
1 RED 15 247
8 BLUE 30 136
9 GREEN - 878没有重复,只是每种类型和它的预测字段和closed_sum字段之和这似乎是一个有点容易的修复,但我已经调试了几个小时,但没有效果,所以任何想法或建议都会有帮助!
发布于 2021-05-04 17:59:55
我认为联合中的数据类型需要匹配。我在守则中看到以下内容:
a.flag,a.metric,0,'0'你能试试下面这个来看看它是否有效吗?
a.flag,a.metric,0,0https://stackoverflow.com/questions/67389658
复制相似问题