选择带有子查询的语句到新表

时间:2019-12-24 20:36:06

标签: sql snowflake-data-warehouse

我一生无法将结果推送到表格中。我对SQL和Snowflake还是相当陌生,所以我确定这是一个简单的语法问题。下面的代码显示的结果在Snowflake中很好,但是现在我需要将这些结果放入自己的表“ Results”中,不需任何帮助!

这是我正在工作的SQL语句:

SELECT *
FROM "CTDBGI"."PUBLIC"."SOLAR"
WHERE "Home Phone" NOT IN(Select 'Phone' FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS")
AND "Zip" IN(Select "Zip" FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS");

2 个答案:

答案 0 :(得分:1)

正如已经建议的那样,您可以使用Create table“ TABLE NAME” AS ...,但是“ AS”关键字将出现在表名之后。

例如,您的情况;

CREATE TABLE RESULTS AS 
SELECT *
FROM "CTDBGI"."PUBLIC"."SOLAR"
WHERE "Home Phone" NOT IN(Select 'Phone' FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS")
AND "Zip" IN(Select "Zip" FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS");

但是,在您的代码中,子查询将Phone定义为字符串“ Phone”,它应该是Phone或“ Phone”。在SQL中,“”被视为字符串,并且不会在运行时求值。

使用正确的语法修改代码;

CREATE TABLE RESULTS AS 
SELECT *
FROM "CTDBGI"."PUBLIC"."SOLAR"
WHERE "Home Phone" NOT IN(Select "Phone" FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS")
AND "Zip" IN(Select "Zip" FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS");

希望这会有所帮助。

答案 1 :(得分:0)

雪花支持create table as。所以:

CREATE TABLE AS new_table
    SELECT *
    FROM "CTDBGI"."PUBLIC"."SOLAR"
    WHERE "Home Phone" NOT IN (Select 'Phone' FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS") AND
         "Zip" IN (Select "Zip" FROM "CTDBGI"."PUBLIC"."CLIENTINPUTS");