SQL语句在SQL Server中创建表时如何引用其他表的字段来进行计算
例如创建表Products后createtableProducts(pidchar(3)primarykey,pricedecimal(18,2),)再创建另一个表Ord...
例如创建表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语句只能在整个编辑结束时才能用分号,也可以不用分号。
推荐于2018-03-05 · 知道合伙人金融证券行家
关注
展开全部
SQL Server的计算字段不支持引用外部表的字段。
或者你可以自定义一个函数,函数从Products检索price并返回。在计算列中引用这个函数进行计算。
假设创建了一个叫做GetPriceFromProducts的函数。
amount as (GetPriceFromProducts(ord_no) * Qty)
或者你可以自定义一个函数,函数从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]) )
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你需要用这个去做什么 。。。。。用数据约束不行吗 。。。。。。你在添加数据的时候这个字段的数据是([price]*[qty]) 这个样子计算出来的。 你可以创建一个约束 ,但是他的目地不是建表,而是检验amount是否合格 (amount = ([price]*[qty]) )) 外键也行啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用select子句去试试。
amount as ((select price from Products where .....) * qty ) ;
select 子句中必须是一个单值。
amount as ((select price from Products where .....) * qty ) ;
select 子句中必须是一个单值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询