如何解决为什么我在尝试加入表时收到 Oracle 错误-ORA-01790?
我将两个表连接在一起以生成一个新表,其中包含名为“预测”和“关闭”的两个字段的总和及其元数据。
我遇到的问题 是因为在我有一个条件如果值为“绿色”,则插入一个“-”符号。直观地说,当我对该列进行求和时,它会给我一个 “表达式必须与相应表达式具有相同的数据类型” 的错误。有没有办法写案例 我的脚本中的语句来规避那个或不同的解决方案?
表 1:
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
Table2- 保存我们的静态数据:
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,FORECAST
union
select
a.flag,a.metric,'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','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
如您所见,它会按日期输出每种类型,但不会将它们组合在一起以创建总和列。
这是我想要的期望输出:
FLAG | MESSAGING | FORECAST_SUM | CLOSED_SUM
1 RED 15 247
8 BLUE 30 136
9 GREEN - 878
没有重复,只有每种类型及其预测字段和 closed_sum 字段的总和 这看起来有点容易解决,但我已经调试了几个小时但无济于事,所以任何想法或建议都会有所帮助!
解决方法
我认为联合中的数据类型需要匹配。我在代码中看到以下内容:
a.flag,a.metric,'0'
你能在下面试试这个,看看它是否有效吗?
a.flag,0
,
我只是用内连接连接了两个表,然后计算 forecast
的 closed
和 Table1
列的总和,然后按 Table2 中的 chart_date,flag,header,metric
列分组。请检查。
查询:
select b.chart_date,b.flag,b.header,b.metric,sum(a.forecast)forcast_sum,sum(a.closed)closed_sum
from Table1 a inner join Table2 b on a.messaging=b.metric
group by b.chart_date,b.metric
输出:
CHART_DATE | 标志 | 标题 | 公制 | FORCAST_SUM | CLOSED_SUM |
---|---|---|---|---|---|
20-JUL-20 | 1 | 类型 | 蓝色 | 30 | 136 |
20-JUL-20 | 8 | 类型 | 绿色 | - | 878 |
20-JUL-20 | 9 | 类型 | 红色 | 15 | 247 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。