我正在尝试在 SQL 中创建一个 table 并不断收到错误消息

I am trying to create a table in SQL and keep getting an error

我正在使用 Teradata SQL 助手创建 table。我使用的代码如下:

CREATE TABLE calendar
( 
     CalendarKey INT NOT NULL,
     FullDate DATE NOT NULL,
     DayOfWeek VARCHAR(20) NOT NULL,
     DayOfMonth INT NOT NULL,
     Month VARCHAR(20) NOT NULL,
     Qtr VARCHAR(2) NOT NULL,
     Year VARCHAR(4) NOT NULL

     PRIMARY KEY (CalendarKey)
);

我在尝试执行命令时遇到此错误:

[Teradata Database] [3707] Syntax error, expected something like a 'CHECK' keyword between ',' and the 'Month' keyword.

有人知道问题出在哪里吗?

试试这个方法

CREATE TABLE calendar (
  CalendarKey INT NOT NULL,
  FullDate DATE NOT NULL,
  DayOfWeek VARCHAR(20) NOT NULL,
  DayOfMonth INT NOT NULL,
  Month VARCHAR(20) NOT NULL,
  Qtr VARCHAR(2) NOT NULL,
  Year VARCHAR(4) NOT NULL
)

ALTER TABLE `calendar` ADD PRIMARY KEY (`CalendarKey`);

试试这个,将 table 与 PK 作为 Table 定义的一部分

CREATE TABLE calendar
( 
     CalendarKey INT PRIMARY KEY NOT NULL,
     FullDate DATE NOT NULL,
     [DayOfWeek] VARCHAR(20) NOT NULL,
     [DayOfMonth] INT NOT NULL,
     [Month] VARCHAR(20) NOT NULL,
     Qtr VARCHAR(2) NOT NULL,
     [Year] VARCHAR(4) NOT NULL
); 

或者这个有一个主键 PK 和一个身份[自动计数器]

CREATE TABLE calendar
( 
     CalendarKey INT PRIMARY KEY Identity(1,1) NOT NULL,
     FullDate DATE NOT NULL,
     [DayOfWeek] VARCHAR(20) NOT NULL,
     [DayOfMonth] INT NOT NULL,
     [Month] VARCHAR(20) NOT NULL,
     Qtr VARCHAR(2) NOT NULL,
     [Year] VARCHAR(4) NOT NULL
);

- 注意,如果列名是保留关键字,建议使用括号 [],例如 [year]

错误表明 month(和 year)是 Teradata 中的保留关键字,不能用作列名。

您可以将其双引号(但随后您也必须在每个查询中将其双引号)或更改名称。还有另一个问题,primary key 约束前缺少逗号:

CREATE TABLE calendar
( 
     CalendarKey INT NOT NULL,
     FullDate DATE NOT NULL,
     DayOfWeek VARCHAR(20) NOT NULL,
     DayOfMonth INT NOT NULL,
     "Month" VARCHAR(20) NOT NULL,
     Qtr VARCHAR(2) NOT NULL,
     "Year" VARCHAR(4) NOT NULL,

     PRIMARY KEY (CalendarKey)
);