【问题标题】:[ORA]ORA-00917: Missing Comma when inserting into a table[ORA]ORA-00917: 插入表格时缺少逗号
【发布时间】:2018-11-16 18:19:17
【问题描述】:

我正在尝试将表中的一些数据插入到一个空表中,这就是我已经走了多远:

INSERT INTO T_TLF_KØ_KVARTER (TIDSPUNKT AS DATO,
 TIDSRUM AS INTERVAL,
 QUEUE AS KØ,
 SUM(TOTAL_KALD_IALT) AS KALD_I_ALT,
 SUM(ANTAL_KALD) AS KALD_INDGÅENDE,
 SUM(ANTAL_DISTRIBUERET_KALD) AS KALD_DISTRIBUEREDE,
 SUM(ANTAL_BESVARET) AS KALD_BESVAREDE,
 SUM(IKKE_BESVARET_KALD) AS KALD_UBESVAREDE,
 SUM(ANTAL_TABTE_KALD) AS KALD_TABTE,
 SUM(BESVARET_25_SEK) AS KALD_BESVARET_U25,
 SUM(CALLBACK) AS KALD_CALLBACKS,
 SUM(BESVARET_I_KS) AS KALD_BESVARET_SC,
 SUM(BESVARET_I_SC) AS KALD_BESVARET_DI,
 SUM(BESVARET_PRI_SKILL) AS KALD_BESVARET_PRIMÆR_SKILL,
 SUM(BESVARET_SEC_SKILL) AS KALD_BESVARET_SEKUNDÆR_SKILL)
FROM 
    GENESYS.NYK_SEAGATE_INTERVAL_QUEUE
GROUP BY 
TIDSPUNKT,
TIDSRUM,
QUEUE
ORDER BY 
QUEUE,
TIDSRUM

编辑:使用 SELECT

INSERT INTO T_TLF_KØ_KVARTER (TIDSPUNKT AS DATO,
 TIDSRUM AS INTERVAL,
 QUEUE AS KØ,
 SUM(TOTAL_KALD_IALT) AS KALD_I_ALT,
 SUM(ANTAL_KALD) AS KALD_INDGÅENDE,
 SUM(ANTAL_DISTRIBUERET_KALD) AS KALD_DISTRIBUEREDE,
 SUM(ANTAL_BESVARET) AS KALD_BESVAREDE,
 SUM(IKKE_BESVARET_KALD) AS KALD_UBESVAREDE,
 SUM(ANTAL_TABTE_KALD) AS KALD_TABTE,
 SUM(BESVARET_25_SEK) AS KALD_BESVARET_U25,
 SUM(CALLBACK) AS KALD_CALLBACKS,
 SUM(BESVARET_I_KS) AS KALD_BESVARET_SC,
 SUM(BESVARET_I_SC) AS KALD_BESVARET_DI,
 SUM(BESVARET_PRI_SKILL) AS KALD_BESVARET_PRIMÆR_SKILL,
 SUM(BESVARET_SEC_SKILL) AS KALD_BESVARET_SEKUNDÆR_SKILL)
FROM 
    GENESYS.NYK_SEAGATE_INTERVAL_QUEUE
GROUP BY 
TIDSPUNKT,
TIDSRUM,
QUEUE
ORDER BY 
QUEUE,
TIDSRUM

SELECT 
 TIDSPUNKT AS DATO,
 TIDSRUM AS INTERVAL,
 QUEUE AS KØ,
 SUM(TOTAL_KALD_IALT) AS KALD_I_ALT,
 SUM(ANTAL_KALD) AS KALD_INDGÅENDE,
 SUM(ANTAL_DISTRIBUERET_KALD) AS KALD_DISTRIBUEREDE,
 SUM(ANTAL_BESVARET) AS KALD_BESVAREDE,
 SUM(IKKE_BESVARET_KALD) AS KALD_UBESVAREDE,
 SUM(ANTAL_TABTE_KALD) AS KALD_TABTE,
 SUM(BESVARET_25_SEK) AS KALD_BESVARET_U25,
 SUM(CALLBACK) AS KALD_CALLBACKS,
 SUM(BESVARET_I_KS) AS KALD_BESVARET_SC,
 SUM(BESVARET_I_SC) AS KALD_BESVARET_DI,
 SUM(BESVARET_PRI_SKILL) AS KALD_BESVARET_PRIMÆR_SKILL,
 SUM(BESVARET_SEC_SKILL) AS KALD_BESVARET_SEKUNDÆR_SKILL
FROM 
 GENESYS.NYK_SEAGATE_INTERVAL_QUEUE
GROUP BY
 TIDSPUNKT,
 TIDSRUM,
 QUEUE
ORDER BY 
 QUEUE, 
 TIDSRUM

【问题讨论】:

  • SELECT 在哪里?考虑改为创建一个视图。
  • 这可能是问题
  • 已经创建了一个视图,但是我需要将数据插入到一个表中
  • INSERT 语法是INSERT INTO targettablename (tcol1, tcol2, ...) SELECT ... FROM sourcetablename ...
  • 我已经用SELECT添加了,还是说缺少逗号

标签: sql oracle oracle11g


【解决方案1】:
INSERT INTO T_TLF_KØ_KVARTER (DATO,
 INTERVAL,
 KØ,
 KALD_I_ALT,
 KALD_INDGÅENDE,
 KALD_DISTRIBUEREDE,
 KALD_BESVAREDE,
 KALD_UBESVAREDE,
 KALD_TABTE,
 KALD_BESVARET_U25,
 KALD_CALLBACKS,
 KALD_BESVARET_SC,
 KALD_BESVARET_DI,
 KALD_BESVARET_PRIMÆR_SKILL,
 KALD_BESVARET_SEKUNDÆR_SKILL)
SELECT 
 TIDSPUNKT,
 TIDSRUM,
 QUEUE,
 SUM(TOTAL_KALD_IALT),
 SUM(ANTAL_KALD),
 SUM(ANTAL_DISTRIBUERET_KALD),
 SUM(ANTAL_BESVARET),
 SUM(IKKE_BESVARET_KALD),
 SUM(ANTAL_TABTE_KALD),
 SUM(BESVARET_25_SEK),
 SUM(CALLBACK),
 SUM(BESVARET_I_KS),
 SUM(BESVARET_I_SC),
 SUM(BESVARET_PRI_SKILL),
 SUM(BESVARET_SEC_SKILL)
FROM 
 GENESYS.NYK_SEAGATE_INTERVAL_QUEUE
GROUP BY
 TIDSPUNKT,
 TIDSRUM,
 QUEUE

【讨论】:

  • 非常感谢,已解决!
  • 太棒了@SteveHoff,现在别忘了勾选已回答的选项:-)
【解决方案2】:

正确的语法是

INSERT INTO destination_table (col1,col2--coln)
SELECT col1,col2---coln FROM source_table
WHERE condition; --if any 

但您在查询中使用聚合 (SUM(TOTAL_KALD_IALT) AS KALD_I_ALT) 代替列名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2016-01-30
    相关资源
    最近更新 更多