有人知道我如何在Postgres中生成一个列吗?
下面是SQL Server中的代码:
CREATE TABLE [dbo].[PRICE]
(
[ISIN] [varchar](50) NOT NULL,
[Nemo] [varchar](50) NOT NULL,
[Month(t)] [int] NOT NULL,
[Month(t-1)] [int] NOT NULL,
[Month(t-2)] [int] NOT NULL
)
我在网上搜索了一下,发现在Postgres中做这件事的方法是使用GENERATE ALWAYS AS
,但是我得到了一个错误,因为月份列重复了好几次,这是做减法时应该区分的问题。
CREATE TABLE PRICE
(
ISIN varchar(50) NOT NULL,
Nemo varchar(50) NOT NULL,
Month int GENERATED ALWAYS AS (t) STORED,
Month int GENERATED ALWAYS AS (t-1) STORED,
Month int GENERATED ALWAYS AS (t-2) STORED,
)
2条答案
按热度按时间4si2a6ki1#
postgres有不同的语法,您可以通过名称引用列并创建新列。
Reference
测试
| 伊辛|尼莫|月|第1个月|第2个月|
| - ------|- ------|- ------|- ------|- ------|
| 美国汽车协会|bbb|二十个|十九|十八|
View on DB Fiddle
lf3rwulv2#
这些不是生成的列,它们只是有非标准的名称,需要用引号括起来。在SQL Server中,这样的列需要用方括号括起来。Postgres遵循SQL标准,这样的名称需要用双引号括起来:
Example with SQL Server
Example with PostgreSQL