SQL语句在SQL Server中创建表时如何引用其他表的字段来进行计算

例如创建表Products后 create table Products ( pid char(3) primary key, price decimal(18,2), ) 再创建另一个表Orders时 create table Orders ( ord_no char(4) primary key, qty int, amount as ([price]*[qty]) ) amount 字段是计算字段,怎样引用Products表的price字段来成功建表

1、登陆sql server

2、 单击数据库,选择要在哪个数据库创建表。

3、 新建查询按钮,进入编辑界面。

4、以创建学生表为例。

5、 将创建好的表保存,就完成了。


注意事项:

表之间的列要用英文的【逗号】隔开,表的SQL语句不区分大小写,SQL语句只能在整个编辑结束时才能用分号,也可以不用分号。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-05

创建主键、外键关联的数据库表

创建含有计算字段的数据库表

本回答被网友采纳
第2个回答  推荐于2017-11-25
SQL Server的计算字段不支持引用外部表的字段。
或者你可以自定义一个函数,函数从Products检索price并返回。在计算列中引用这个函数进行计算。
假设创建了一个叫做GetPriceFromProducts的函数。
amount as (GetPriceFromProducts(ord_no) * Qty)追问

首先感谢你的解答,再问下自定义函数是不是指创建存储过程,如若不是,自定义函数怎么写,谢谢

追答

自定义函数类似存储过程,但是不是存储过程。
语法:
CREATE FUNCTION GetProductPrice(@pid char(3))
RETURNS DECIMAL(18,2)
BEGIN
DECLARE @price DECIMAL(18,2)
SELECT @price = price FROM Products WHERE pid = @pid
RETURN @price
END

GO

创建Orders表时,引用这个函数。
貌似,你的Orders表中少了一个pid字段吧。
create table Orders ( ord_no char(4) primary key, pid char(3),
qty int, amount as (GetProductPrice(pid)*[qty]) )

本回答被网友采纳
第3个回答  2012-11-05
你需要用这个去做什么 。。。。。用数据约束不行吗 。。。。。。你在添加数据的时候这个字段的数据是([price]*[qty]) 这个样子计算出来的。 你可以创建一个约束 ,但是他的目地不是建表,而是检验amount是否合格 (amount = ([price]*[qty]) )) 外键也行啊。
第4个回答  2012-11-05
用select子句去试试。
amount as ((select price from Products where .....) * qty ) ;
select 子句中必须是一个单值。
相似回答