Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 &引用;from关键字未找到";,在子查询中使用distinct_Sql_Oracle - Fatal编程技术网

Sql &引用;from关键字未找到";,在子查询中使用distinct

Sql &引用;from关键字未找到";,在子查询中使用distinct,sql,oracle,Sql,Oracle,基本上,我想做的是将值NUM\u ORIGEN和大小写的总和插入名为temprecorabifinal的表中 当我使用justNUM\u ORIGENrun perfect执行时,但当我添加总和时,它会显示标题中列出的错误。现在显示错误ORA-00937:没有单个组函数 Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A) WITH data AS ( SELECT DISTINCT( NUM_ORIGEN ),

基本上,我想做的是将值
NUM\u ORIGEN
和大小写的总和插入名为
temprecorabifinal
的表中

当我使用just
NUM\u ORIGEN
run perfect执行时,但当我添加总和时,它会显示标题中列出的错误。现在显示错误ORA-00937:没有单个组函数

Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A)
WITH
data AS
    (
    SELECT DISTINCT( NUM_ORIGEN ),
       sum(
           case
               when IDPERIODO = (2016010-5)
               then CTA_PRINCIPAL_DELTA else 0 
           end) rec_a x
    from FT_RECARGA_BI
    Where IDPERIODO BETWEEN 201604 and 2016010
    )

Select x from data
Group By x;
根据这些建议,我现在更改查询

Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A)
WITH
data AS
(
SELECT DISTINCT( NUM_ORIGEN )x,
sum(case when IDPERIODO = (2016010-5) then CTA_PRINCIPAL_DELTA else 0 end)rec_a from FT_RECARGA_BI
Where IDPERIODO BETWEEN 201604 and 2016010
)
Select x,rec_a from data
Group By x,rec_a;
终于查询工作了,我几乎哭了,但是计数给0,但是嘿!最后脚本工作:D

Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A)
WITH
data AS
(
SELECT DISTINCT( NUM_ORIGEN ) x,
sum(case when IDPERIODO = (2016010-5) then CTA_PRINCIPAL_DELTA else 0  end)rec_a from FT_RECARGA_BI
Where IDPERIODO BETWEEN 201604 and 2016010
Group by IDPERIODO,NUM_ORIGEN
)
Select x,rec_a from data
Group By x,rec_a;

在聚合函数sum中使用IDPERIODO时,您已将其放入GROUPBY子句中。那么,它总结了每个IDPERIODO和NUM_ORIGEN的CTA_PRINCIPAL_DELTA

所以查询可以有两种方式

一,

或 2.


选择
rec_a
x
作为别名,而不是两者都选。
distinct
不是一个函数。它始终适用于“选择”列表中的所有列。写
distinct(num_origen),…
distinct num_origen,…
什么是IDPERIODO=(2016010-5)?2016005带有关键字的
及其后续子查询使此任务变得非常复杂。不要在标题中添加“已解决”。如果您找到了解决方案,请添加答案并接受它。
Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A)
WITH
data AS
(
SELECT distinct  NUM_ORIGEN  x, IDPERIODO ,
sum (case when IDPERIODO = (2016010-5) then CTA_PRINCIPAL_DELTA else 0  end) rec_a from FT_RECARGA_BI
Where IDPERIODO BETWEEN 201604 and 2016010
Group by IDPERIODO ,NUM_ORIGEN
)
Select x,rec_a from data
Group By x,rec_a;
Insert into SAC_IND.tempRecargaBIFINAL(NUM_ORIGEN,REC_A)
WITH
data AS
(
SELECT distinct NUM_ORIGEN x, 
sum (case when IDPERIODO = (2016010-5) then CTA_PRINCIPAL_DELTA else 0  end) rec_a from FT_RECARGA_BI
Where IDPERIODO BETWEEN 201604 and 2016010
Group by NUM_ORIGEN
)
Select x,rec_a from data
Group By x,rec_a;