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 子句中必须是一个单值。

sql server 2012 在设计表中一个表中的字段引用另一个表的字段
就是建立一个外键啊 alter table 表1 add constraint fk_groupid foreign key (groupid) references 表2(id)假如下边的表叫表2 其中fk_groupid是外键的名称, 你自己可以启明 foreign key (groupid)括号里是你在表1里需要建立外键的字段 表2(id) 这个是被引用的表及被引用的表下的字段 ...

sql server利用其他表的数据update当前表
一、用抄写它表功能,打开资料表更新在编表 二、用快表集成处理平台,写入指令完成数据更新,如:抄写它表("《报告业绩_总表_0301_0803季度_1760家_2403家》以 a 列为关键词把 k,l,m,n 抄写到 p1,q1,r1,s1 ")<快表>研发者:QQ362482863 ...

sql server 2000中一个表的某一字段的信息来自于另一个表的程序怎么样...
test2(userName) test2 表 的 userName 字段

用SQL SERVER 如何在建好表后添加外码?SQL语句怎么写呀?
(关系表内字段)

如何在SQL Server中进行表间数据的导入和复制?
Sql:insertintotable1select*fromtable2(完全复制)insertintotable1selectdistinct*fromtable2(不复制重复纪录)insertintotable1selecttop5*fromtable2(前五条纪录)2。不在同一数据库中(如,db1table1,db2table2)sql:insertintodb1..table1select*fromdb2..table2(完全复制)insertintodb1..table1...

SQLsql server 中如何判断一个字段中包含另一个字段,并记录下来,生成新...
查询写法如下:select 日期,计划ID,消费,项目 into 新表 from 表A,表B where charindex(项目代码,计划ID)>0 charindex函数就是判断a是否包含在b中。。

请问如何在sql语句中调用从另一个表中的rs取值呢?
这个写法没有错,你可以用把变量sql输出一下,看一下数据库语句是什么。然后直接在数据库里运行一下,看会不会报错,如果报错跟据表错信息自己判断下。。还有你Yao_Article表里的classid是什么类型的,如果是字符型就要加单引号了。

sql server如何创建触发器,使在a表中插入数据时在b表中追加相同的记录...
create trigger insert_for_b on a after insert as begin insert into b(插入a表字段)select 插入a表字段 from inserted --插入a表字段表示a表的所有字段,如果这里需要b表其他字段,要加固定的值 end go

sql如何在建立表时设定外来键?
sql如何在建立表时设定外来键? 1.直接写sql语句。2.用SQLyog 选择外来键表 ,点选右键 选择关联\/外来键,然后再选择主表,外来键。3.在表 vet_specialties 上点选右键 ,然后找到Relationships\/ForeignKeys中,然后选择相应的列。具体如下:1、简介 SQL语言,是结构化查询语言(Structured Query ...

如果表名是另一张表的字段值,如何用SQL查询?
需要定义两个RecordSet结果集rs和rs1 sql = "select t_name from 表1"Set rs = Server.CreateObject("ADODB.RecordSet") \/\/rs结果集 rs.Open sql,conn,1,1 sql = "select * from "&rs("t_name")&" where ..."Set rs1 = Server.CreateObject("ADODB.RecordSet") \/\/rs1结果集 rs1....

相似回答