尝试通过减去一年在SQL中添加新列

时间:2015-04-05 22:12:29

标签: sql sql-server

Noob就此。所以我会切入到这一点。这是一个课堂作业,我的教授自周四以来没有回复过电子邮件。我想解决的问题是 -

“编写一个将从每张专辑的制作日期减去一年的查询,并将其标记为RecordDate,并在表格中显示每个条目的专辑标题,制作日期和录制日期。按专辑标题排序结果。“

这个表应该看起来像enter image description here

这是我使用的查询(在课程中给出我知道重复插入但他想要的东西)......

CREATE TABLE ALBUM(
ALBUM_ID char(4) UNIQUE NOT NULL,
ALBUM_TITLE varchar(255),
ALBUM_YEAR year,
ALBUM_PRODUCER varchar(255),

Primary Key(ALBUM_ID)
);

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER)
VALUES ('A001', 'Awake', '1994', 'East West Record');

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER)
VALUES ('A002', 'Moving Pictures', '1981', 'Anthem');

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER)
VALUES ('A003', 'Damage', '2013', 'RCA REcords');

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER)
VALUES ('A004', 'Continuum', '2006', 'Columbia Records');

以下是我用来开始回答问题的内容

 ALTER TABLE ALBUM ADD RECORD_DATE INT;
 UPDATE ALBUM SET RECORD_DATE=(ALBUM_YEAR-1);

这确实是一个新的列,并给出了我想要的结果到目前为止(还没有得到问题的后面部分)。但这是两个不同的问题......

那么,根据SQL专家的建议,要实现他想要的东西,我必须编写多个查询,还是可以在一个查询中完成?我的数据类型也可以吗?

不,我不是要求SQL执行此操作。这不是“请为我做我的家庭作业”。对不起,但它必须全部都是上限锁,因为他想要那样。

2 个答案:

答案 0 :(得分:2)

安德鲁导师没有要求你添加新专栏或任何内容,他要求你以特定方式提供数据。

我们使用一些名为Database Normalization rules的特定规则在SQL Server中存储数据。

但是为了以任何特定形式显示数据,我们编写了SELECT个查询,这些查询从表中选择数据,我们使用各种函数和方法在运行时操作数据并以所需结构显示数据/格式/方式。

同样在这种情况下,对于您的要求,您不需要添加另一列只是为了按照要求执行您的导师,它实际上违反了规范化规则。您只需要一个简单的SELECT查询,它将以所需的格式/方式显示数据。

选择查询将简单到......

SELECT [ALBUM_TITLE]     AS [Album Title]
      ,[ALBUM_YEAR]      AS [Production Date]
      ,[ALBUM_YEAR] - 1  AS [Record Date]
FROM ALBUM
ORDER BY [ALBUM_TITLE]

答案 1 :(得分:1)

您根本不需要更改表格。您只是想要选择其他列。我不会为你写完整的查询,但我会告诉你我的意思:

SELECT ALBUM_TITLE, ALBUM_YEAR, ALBUM_YEAR - 1 AS  RECORD_DATE
-- rest of the query here --