首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >oracle pl/saql ORA-01790:表达式必须与相应表达式具有相同的数据类型

oracle pl/saql ORA-01790:表达式必须与相应表达式具有相同的数据类型
EN

Stack Overflow用户
提问于 2014-06-05 14:41:31
回答 3查看 25.9K关注 0票数 4
代码语言:javascript
运行
复制
SELECT SUM(SALES_AMOUNT)SALES,
YEAR,
MONTH,
CATAGORY_ID,
SALES_PERSON_ID,
ITEM_TYPE_ID
FROM APEX_FINAL
    where sales_amount is not null
     and catagory_id is not null
GROUP BY (YEAR,MONTH,CATAGORY_ID,SALES_PERSON_ID,ITEM_TYPE_ID)

union all

SELECT SUM(SALES_AMOUNT)SALES,
YEAR,
MONTH,
CATAGORY_ID,
'all others' SALES_PERSON_ID,
ITEM_TYPE_ID
FROM APEX_FINAL
    where sales_amount is not null
    and sales_person_id is null 
GROUP BY (YEAR,MONTH,CATAGORY_ID,SALES_PERSON_ID,ITEM_TYPE_ID)

这是我的代码,请帮助我解决我的问题,因为我得到了错失的数学数据类型的评估,但所有的数据类型都是一样的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-05 14:44:59

销售人员ID似乎不匹配。它可能是表中的NUMERIC数据类型。

您可以在第一个Union查询中使用TO_CHAR(SALES_PERSON_ID),如下所示。它会帮助你解决这个问题

代码语言:javascript
运行
复制
SELECT SUM(SALES_AMOUNT)SALES,
YEAR,
MONTH,
CATAGORY_ID,
TO_CHAR(SALES_PERSON_ID) SALES_PERSON_ID,
ITEM_TYPE_ID
FROM APEX_FINAL
    where sales_amount is not null
     and catagory_id is not null
GROUP BY (YEAR,MONTH,CATAGORY_ID,SALES_PERSON_ID,ITEM_TYPE_ID)

union all

SELECT SUM(SALES_AMOUNT)SALES,
YEAR,
MONTH,
CATAGORY_ID,
'all others' SALES_PERSON_ID,
ITEM_TYPE_ID
FROM APEX_FINAL
    where sales_amount is not null
    and sales_person_id is null 
GROUP BY (YEAR,MONTH,CATAGORY_ID,SALES_PERSON_ID,ITEM_TYPE_ID)
票数 8
EN

Stack Overflow用户

发布于 2019-10-16 21:35:43

我在一个类似的问题上挣扎了几个小时,意识到我们正在联合的两个表的列顺序应该是相同的!

它仍然会给出相同的错误,因此请确保列的顺序是相同的:)

票数 2
EN

Stack Overflow用户

发布于 2014-06-05 15:01:07

正如@Nisha已经指出的,您可能会得到这个错误,因为SALES_PERSON_ID是一个数字字段-您必须将其转换为字符串,或者(最好)连接到另一个表以获取销售人员的姓名。

此外,我认为您的查询中有一个逻辑错误-在您的第一个SELECT中,您按照catagory_person_id is not null进行过滤;这可能应该是sales_person_id is not null

假设是这种情况,那么您可以使用CASE语句简化查询(您也可以使用DECODECOALESCE):

代码语言:javascript
运行
复制
SELECT 
  SUM(SALES_AMOUNT) SALES,
  YEAR,
  MONTH,
  CATAGORY_ID,
  (case 
     when sales_person_id is not null then to_char(SALES_PERSON_ID)
     else 'all others' 
   end) as sales_person_id,
  ITEM_TYPE_ID
FROM APEX_FINAL
where sales_amount is not null
GROUP BY (YEAR,MONTH,CATAGORY_ID,SALES_PERSON_ID,ITEM_TYPE_ID)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24053294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档