【问题标题】:Datatype Error ORA-01790数据类型错误 ORA-01790
【发布时间】:2018-03-29 06:11:03
【问题描述】:

我有一个数据类型错误:

ORA-01790: 表达式必须与对应的表达式具有相同的数据类型

我已经检查了所有相同的数据类型。

这是我的代码:

SELECT CONTRACT_ID, DATEKEY, 'Projection', '1', OPEN_BALANCE,
  PRINC_REPAYMENT, INTEREST, PAR_PREPAYMENT, FULL_REDEMPTION, REDRAW_AMOUNT, PRIN_DEFAULTS,
  PRIN_RECOVERY, PRIN_DEL, INTE_DEL, DEL_PRIN_COLL, DEL_INT_COLL, CLOSE_PRIN_BAL, EXT_ID,
  LAS_ACTIVE_FLG, PROD_ID, ASSET_TYP_ID, CPT_ID, ACCRETION, CASHFLOW_DT 
FROM FACT_PWOR_CASHFLOW
WHERE ACTUAL_FLG = 'Y' AND LATEST_PROJ_IND = '0' AND LAS_ACTIVE_FLG = 'Y'
UNION
(SELECT CONTRACT_ID, DATEKEY_COLL, 'Actual', '1', SUM(OPENING_BALANCE) SUM_OPEN_BAL,
    SUM(MI_PRINCIPLE) SUM_MI_PRIN, SUM(MI_INTEREST) SUM_MI_INTER, SUM(PARTIAL_PREPAYMENT) SUM_PAR_PREPAY,
    SUM(FULL_REDEMPTION) SUM_FULL_REDEM, SUM(TTL_AMT_REDRAW) SUM_TTL_AMT,
    '0', '0', '0', '0', '0', '0', SUM(CLOSING_BALANCE) SUM_CLOS_BAL, '0', 'Y',
    PROD_ID, ASSET_TYPE_ID, CPT_ID, '0', COLLECTION_START_DT
FROM FACT_PWOR_COLLECTION
WHERE LAS_ACTIVE_FLG = 'Y'
GROUP BY CONTRACT_ID, DATEKEY_COLL, PROD_ID, ASSET_TYPE_ID, CPT_ID, COLLECTION_START_DT);

【问题讨论】:

  • 您能否重新格式化您的问题以使其更清楚?
  • 当我运行这个查询时,它给了我这个错误“ORA-01790:表达式必须与相应的表达式具有相同的数据类型”。我已经检查了所有的数据类型匹配。
  • 我建议您在表格设计中添加一些示例数据,这将有助于我们为您提供更多帮助。

标签: sql oracle union


【解决方案1】:

当您在您的情况下使用UNION 之类的集合操作时,FACT_PWOR_CASHFLOWFACT_PWOR_COLLECTION 两个表中所有匹配列的数据类型必须匹配。

例如,如果第一个SELECT语句中ACCRETION列的数据类型可能是integer,而第二个SELECT语句中的'0'对应的列是@987654329 @ ,然后出现 DataType Error

删除 SELECT 列表中的所有列,然后尝试从第一个 CONTRACT_ID 开始逐步为两个 SELECT 语句添加列。

【讨论】:

  • 这真是个愚蠢的错误。我在 ' ' 中初始化了我的 0 ,所以它变成了你说的 char 。谢谢巴巴罗斯!
  • @AzimHakimi 谢谢你,兄弟。
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多