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
的表中
当我使用justNUM\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;