Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当我尝试将更新脚本从**Access**转换为**Oracle时,更新脚本会导致错误**_Sql_Oracle_Ms Access_Converter - Fatal编程技术网

Sql 当我尝试将更新脚本从**Access**转换为**Oracle时,更新脚本会导致错误**

Sql 当我尝试将更新脚本从**Access**转换为**Oracle时,更新脚本会导致错误**,sql,oracle,ms-access,converter,Sql,Oracle,Ms Access,Converter,我试图将一些查询转换为使用Oracle而不是Access,但未成功。我只是点错菜了吗?或者使用错误的语句 以下是脚本: Error starting at line : 142 in command - UPDATE CONTROL_RECORDS SET EXTRACT_WORK_001.BAY_CASEFLOW_SKU_COUNT = DECODE(-1, SIGN(0 - COMBINED_LAYER_QTY), 0, DECODE(-1, SIGN(0 - BAY_ACTIV

我试图将一些查询转换为使用Oracle而不是Access,但未成功。我只是点错菜了吗?或者使用错误的语句

以下是脚本:

Error starting at line : 142 in command -
UPDATE CONTROL_RECORDS 
SET EXTRACT_WORK_001.BAY_CASEFLOW_SKU_COUNT =  
DECODE(-1, 
SIGN(0 - COMBINED_LAYER_QTY), 0, 
DECODE(-1, 
SIGN(0 - BAY_ACTIVITY), 
(DECODE(ADJUSTED_BAY_USPD*DAY_COUNT/BAY_ACTIVITY<=CASEFLOW_USPD_MAX,1,0)), 
0), 
EXTRACT_WORK_001.BULK_CASEFLOW_SKU_COUNT =  
DECODE(-1, 
SIGN(0 - COMBINED_LAYER_QTY), 0, 
DECODE(-1, 
SIGN(0 - BULK_ACTIVITY), 
DECODE(ADJUSTED_BULK_USPD*DAY_COUNT/BULK_ACTIVITY<=CASEFLOW_USPD_MAX,1,0)), 
0), 
EXTRACT_WORK_001.COMBINED_CASEFLOW_SKU_COUNT =  
DECODE(-1, 
SIGN(0 - COMBINED_LAYER_QTY), 0, 
DECODE(ADJUSTED_COMBINED_USPD<=CASEFLOW_USPD_MAX,1,0)) 
FROM CONTROL_RECORDS, EXTRACT_WORK_001 
WHERE (CONTROL_RECORDS.LOC_ID = EXTRACT_WORK_001.LOC_ID) 
AND   ((EXTRACT_WORK_001.COMBINED_LAYER_QTY)=0) 
Error at Command Line : 148 Column : 81 Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
这是原始的访问查询:

UPDATE CONTROL_RECORDS INNER JOIN EXTRACT_WORK_001 
    ON CONTROL_RECORDS.LOC_ID = EXTRACT_WORK_001.LOC_ID 
SET 
    EXTRACT_WORK_001.BAY_CASEFLOW_SKU_COUNT = IIf(combined_layer_qty>0,0,IIf(bay_activity>0,IIf(adjusted_BAY_USPD*day_count/bay_activity<=caseflow_uspd_max,1,0),0)), 
    EXTRACT_WORK_001.BULK_CASEFLOW_SKU_COUNT = IIf(combined_layer_qty>0,0,IIf(bulk_activity>0,IIf(adjusted_BULK_USPD*day_count/bulk_activity<=caseflow_uspd_max,1,0),0)), 
    EXTRACT_WORK_001.COMBINED_CASEFLOW_SKU_COUNT = IIf(combined_layer_qty>0,0,IIf(adjusted_COMBINED_USPD<=caseflow_uspd_max,1,0))
WHERE (((EXTRACT_WORK_001.COMBINED_LAYER_QTY)=0));
请帮忙。我不喜欢什么方法或者什么。。。只要它能工作。

用例更像iif,而不是解码。您的许多表达式都可以简化。此外,我认为Oracle中没有一种简单的语法可以跨连接进行更新

但是,假设这些表定义了合理的主键和外键,下面的方法可能有效。如果在保留键的表中出现错误,则需要提供有关表和关系的更多信息:

update (
    select
        w.bay_caseflow_sku_count,
        case when
            combined_layer_qty <= 0 and 
            bay_activity > 0 and 
            adjusted_bay_USPD * day_count <= bay_activity * caseflow_uspd_max
          then 1
          else 0
        end as new_bay,
        w.bulk_caseflow_sku_count,
        case when
            combined_layer_qty <= 0 and
            bulk_activity > 0 and
            adjusted_bulk_USPD * day_count <= bulk_activity * caseflow_uspd_max
          then 1
          else 0
        end as new_bulk,
        w.combined_caseflow_sku_count,
        case when
            combined_layer_qty <= 0 and
            adjusted_combined_USPD <= caseflow_uspd_max
          then 1
          else 0
        end as new_combined
    from
        extract_work_001 w
            inner join
        control_records c
            on c.loc_id = w.loc_id
    where 
        w.combined_layer_qty = 0
) t
set
    bay_caseflow_sku_count = new_bay,
    bulk_caseflow_sku_count = new_bulk,
    combined_caseflow_sku_count = new_combined;

你有一些不匹配的括号。最好是你做的挖掘,以找出你错过了什么。你好,欢迎来到这个网站!这是个糟糕的问题。当你有一个特定的、与编程相关的问题时,我建议你阅读并回头看看。这个问题让我很难过我要说的是:几乎可以肯定的是,你必须完全从头重写上面的内容。基本上,只需在Oracle中重建它。如果您是SQL新手,我建议您选择一种更易于使用的关系数据库。甲骨文并没有让学习变得容易。SQL Server或PostgreSQL将是我的首选。不幸的是,在这件事上我没有选择。。。我已经为oracle创建了许多脚本,我对access几乎没有实践经验,但这一个是知识所无法理解的。是的,我正在学习。也许我应该先学点别的,但这是我没有的奢侈。好吧,接入中的IIF本质上就是案例陈述。除此之外,它看起来相当简单。收到此消息:SQL错误:ORA-01779:无法修改映射到非键保留表的列,请阅读整个注释,并采取它在本例中建议的操作。谢谢。你帮了我很多。我能让它工作。谢谢