【问题标题】:How to create derived attribute? [duplicate]如何创建派生属性? [复制]
【发布时间】:2018-04-19 10:02:09
【问题描述】:

我需要创建一个派生属性 Age,它根据其 Datebought 属性计算元组的年龄。我发现它可以用视图制作,但我不知道在哪里放置视图。

CREATE TABLE Kids_Bike(
    BikeId ID,
    BrandName VARCHAR(max),
    ModelName VARCHAR(max),
    DateBought DATE,
    /*??????????????????????*/
    Age (SELECT datediff(day, DateBought , GETdate()) / 365.2425 ) DECIMAL,
    Color VARCHAR(max),
    StationId ID,
    TrainingWheels BIT,
    PRIMARY KEY (BikeId),
    FOREIGN KEY (StationId) REFERENCES RentingStation(StationID)
);

【问题讨论】:

  • 您的问题被标记为 Postgres,但您使用的是 SQL Server 函数。
  • 这可能会更清楚,即解释一堆问号的用途,大概表明以下行是您想要一个有效实现的伪代码。
  • Postgres 中没有datediff() 函数

标签: sql postgresql ddl calculated-columns


【解决方案1】:

您将视图放在表格之外:

create view v_kids_bike as
    select kb.*, extract(day from (current_date - date_bought)) / 365.2425 as age
    from kids_bike;

如果你碰巧使用的是 SQL Server,你可以将创建表中的计算列定义为:

Age as (SELECT datediff(day, DateBought, GETdate()) / 365.2425 ),

【讨论】:

    猜你喜欢
    • 2020-10-25
    • 1970-01-01
    • 2019-05-15
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多