【问题标题】:SQL counting the values from two columns and showing the result in other column at the same tableSQL 计算两列的值并在同一张表的另一列中显示结果
【发布时间】:2013-09-03 12:55:46
【问题描述】:

我在一张表中有两列,如下所示:

CREATE TABLE Invoices
(
  ID_Invoice...
  ....
  UnitPrice decimal (15,2) NOT NULL,
  Discount (15,2) NOT NULL,
)

所以我想在此表中添加一个新列来计算最终价格 - UnitPrice-Discount=TotalCost?请帮忙。

【问题讨论】:

  • 您是在问如何向包含该计算的表中添加一个新的计算列,一个包含创建时的值的新列,还是只想选择它? mysql or sql-server?

标签: sql sql-server create-table alter


【解决方案1】:

如果您使用的是 SQL Server,请尝试计算列:

CREATE TABLE Invoices
(
  ID_Invoice...
  ....
  UnitPrice decimal (15,2) NOT NULL,
  Discount (15,2) NOT NULL,
  TotalCost AS UnitPrice - Discount
)

如果您使用的是 MySQL,则唯一的选择是添加物理列。不要那样做 - 它使表格非规范化并且不会带来任何好处。只需即时查询值:

SELECT
  ID_Invoice,
  UnitPrice,
  Discount,
  UnitPrice - Discount AS TotalCost

MySQL 查询非常简单,通过不存储额外的列,您不必担心 TotalCostDiscountUnitPrice 列不同步。

【讨论】:

  • MariaDB 也有计算列:Virtual columns
  • 我正在使用 Sql server,所以我将使用您提供的第一个示例。非常感谢您的回答,这对我非常有用:)
【解决方案2】:
Alter Table Invoices 
Add TotalCost Decimal(15,2)

将列添加到您的表格中

现在要向新列添加值

Update Invoices
set TotalCost = UnitPrice - Discount

如果有效,请告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多