如何从现有表中创建表?

时间:2014-04-05 16:44:24

标签: oracle create-table

所以我有一个AbstractID,SentenceID,WordID和Word的大表。有些单词显示在多个文件中。我想计算每个单词显示多少个文件,然后用Word和Count创建一个新表。以下是我的数据。 enter image description here

我的SQL查询如下:

CREATE TABLE WORDLIST(WORD, TOTALCOUNT) AS
(
  SELECT WORD FROM ASSIGNMENT2 WHERE
  (
    SELECT WORD, COUNT(*) FROM (select DISTINCT FILEID, WORD FROM ASSIGNMENT2)
    GROUP BY WORD ORDER BY COUNT(*) DESC));

它给了我一个错误: “错误报告: SQL错误:ORA-00936:缺少表达式 00936. 00000 - “缺少表达” *原因:
*动作:“

我该如何纠正?感谢。

1 个答案:

答案 0 :(得分:1)

您的查询过于复杂。错误是因为您的外部where子句没有条件;你选择了多个东西,但这不是正确的,但不能将它们与任何东西进行比较。而且您不需要将查询括在一组括号中。

你可以这样做:

CREATE TABLE WORDLIST (WORD, TOTALCOUNT) AS
SELECT WORD, COUNT(DISTINCT FILEID)
FROM ASSIGNMENT2
GROUP BY WORD;

没有必要对查询进行排序,因为它不会影响将来对新表的查询 - 您仍然需要对这些查询进行排序,因为表中没有固有的行顺序。 (我认为order by会在create-as语句中导致错误,但无法立即检查它。

创建一个表来保存这些信息似乎很奇怪,因为它会很快过时。也许你真的想要一个观点?