SQL和PostGres新手警告。我试图将一个简单的查询放在一起,该查询接受两个表(staging.customers和prod.policies)的连接结果,然后在将结果插入第三个表(prod.result)之前,让我用简单的函数/表达式转换值。
我希望,如果我能得到这个简单的合成的例子工作,它将落入我的地方。
我有以下内容:
模式:
staging.customers
- customerid: integer
- first: varchar(255)
- last: varchar(255)
- age: integer
prod.policies
- customerid: integer
- policynumber: varchar(255)
- policytype: varchar(255)
prod.result
- customerid: integer
- first: varchar(255)
- last: varchar(255)
- age: integer
- policytype: varchar(255)
字符串
我想我可以使用从第1行开始到第7行结束的SET块来做这样的事情:
6 ,age = (cust.age + 5)
型
我没有得到任何错误和值被插入,但年龄的值没有增加5,当我:
SELECT * FROM prod.result;
型
有人能告诉我哪里出错了吗?我想要的只是一种在将结果写入另一个表之前操作连接结果的方法。真的很感谢任何帮助!
1条答案
按热度按时间tgabmvqs1#
我想你可能忽略了
update
和insert
的作用。如果你从一个全新的空prod.result
表开始,然后运行你的更新,它绝对什么也不做,因为update
什么也没有。然后插入只写staging.customers
和prod.policies
中当前的内容。这一点:
获取两个表(staging.customers和prod.policies)的连接结果,然后在将结果插入第三个表(prod.result)之前,让我用简单的函数/表达式转换这些值
所有这些都可以在一个
insert
中完成。在写入insert
之前,您可以动态更改从源表中阅读的内容:字符串
如果你想用
staging.customers
和prod.policies
中的行预填充result
,然后以某种方式更改它们,首先运行insert
,然后运行update
,如果你只向上或向下提升值,完全不需要from
,而不需要引用任何其他行或表中的行:型
如果你的脚本在所有这些之前有一个
result
表的create
语句,你实际上可以把创建、读取、转换和写入都合并到一个create table as select
语句中。