例如:我有一个表“Children”,它具有属性“age”。我现在正在创建一个表“学生”,它只继承了来自孩子的主键“SSN”,但它应该有一个属性“grade”,它来自相应的孩子的年龄(Children.age - 5)。
这是我编写并尝试过的,导致语法错误:
“在此上下文中不允许使用子查询。只允许使用标量表达式。”
create table Children
(
SSN int,
age int,
primary key(SSN)
)
create table Students
(
SSN int,
grade as (select C.age from Children C, Students S where C.SSN = S.SSN) - 5,
primary key(SSN)
)
即使我知道它没有意义,因为select查询不一定会返回一个int值,因为在我尚未创建的子查询中使用表是没有意义的,但我想我在这里添加它,看看是否有某种方法可以使用类似于我尝试过的方式工作的子查询。
我正在使用SQL Server 2008。
答案 0 :(得分:1)
正常创建两个表,然后使用视图连接两个表并为等级创建虚拟列。
例如:
Select c.*, s.*, (c.age - 5) as grade from children c
Inner join student s on s.childid = c.id
答案 1 :(得分:1)
使用视图:
CREATE VIEW Students AS
SELECT c.*,
Grade = c.age - 5
FROM Children c