【问题标题】:How to do calculations as a column in create table SQL statement [closed]如何在创建表 SQL 语句中作为列进行计算 [关闭]
【发布时间】:2021-10-13 05:27:53
【问题描述】:

我想创建一个表,其中的列涉及除以其他两列,然后乘以第三列。 SQL Server 上的文档只有一个乘法示例(下面的示例):

CREATE TABLE dbo.Products
   (
      ProductID int IDENTITY (1,1) NOT NULL
      , QtyAvailable smallint
      , UnitPrice money
      , InventoryValue AS QtyAvailable * UnitPrice
    )

我想做同样的事情,但我之前提到的计算是这样的:

CREATE TABLE dbo.ExampleTable
   (
      ColumnOne INT
      , ColumnTwo INT
      , ColumnThree INT
      , ColumnFour AS (ColumnOne / ColumnTwo) * ColumnThree
    )

我还没有机会在 SQL Server 上实际试用它,但是当我刚刚在 WebSQL 上试用它时,它却没有用。错误信息说:

错误 1:无法准备语句(“QtyAvailable”附近的 1:语法错误)。

我尝试了类似 WebSQL 的更新语句

UPDATE ExampleTable
SET ColumnFour=(ColumnOne/ColumnTwo)*ColumnThree

但是 ColumnFour 的值为 0。尝试 CAST 并更改为十进制数据类型,但没有奏效。

【问题讨论】:

  • 在 SQL Server 中运行良好。 “我还没有机会在 SQL Server 上实际试用它”——也许下次您应该在确认问题确实存在之后才发布问题?
  • WebSQL 已死 - 不要使用它。

标签: sql sql-server database create-table


【解决方案1】:

我刚刚尝试使用以下内容创建它...

CREATE TABLE [dbo].[Testing](
    [Qty] [INT] NOT NULL,
    [Price] [DECIMAL](6, 2) NOT NULL,
    [Discount] [DECIMAL](18, 2) NOT NULL,
    [Calculated]  AS (([Price]/[Qty])*[Discount])
) ON [PRIMARY]
GO

我添加了 1 条记录作为测试...

INSERT INTO dbo.Testing
(
    Qty,
    Price,
    Discount
)
VALUES
(   10,    
    9.99, 
    1.2  
    )

您可能需要稍微更改括号,将整个计算以及除法都包含在括号中。

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2023-03-22
    • 2020-07-08
    相关资源
    最近更新 更多