将输出值插入sql developer中的列

时间:2015-03-03 18:17:11

标签: sql

我能够通过此命令计算停留的天数。

select trunc(DISCHARGE_DATE) - ADMISSION_DATE
from tblhotel;

但是,我想将其存储在同一个表中的另一列中。如何使用此输出存储到另一列中,假设称为“days_stayed'。

或者我可以将其用作该列的约束吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

INSERT INTO tblhotel (days_stayed)
VALUES (TRUNC(DISCHARGE_DATE) - ADMISSION_DATE);

这假设您要插入一行。如果要将计算的值插入到上面SELECT查询中计算数据的同一行,则需要使用UPDATE语句。

UPDATE tblhotel
SET days_stayed = TRUNC(DISCHARGE_DATE) - ADMISSION_DATE;

如果你没有上帝列表中的days_stayed列,你需要添加一个。

ALTER TABLE tblhotel ADD (days_stayed NUMERIC);

希望这有帮助!

编辑: 但是,我应该提一下,通常糟糕的数据库设计是在表中包含计算字段,因为它们会添加额外不需要的存储,并且可能导致数据不一致(以及其他原因)。通常最好根据需要计算它,所以如果你想定期得到这个值,我建议你创建一个存储过程来获取它,或者在这个表上创建一个每次获取它的视图。 像这样:

CREATE VIEW tblhotels_view AS 
SELECT DISCHARGE_DATE, ADMISSION_DATE,
TRUNC(DISCHARGE_DATE) - ADMISSION_DATE AS DAYS_STAYED
FROM tblhotel;

您可以根据需要在SELECT中添加任何字段。然后,您只需要在需要此字段时查询tblhotels_view:

SELECT * FROM tblhotels_view;