基于另一个表列创建计算列

时间:2013-01-28 15:38:05

标签: sql sql-server sql-server-2008 sql-server-2012

如何根据另一个表的Title nvarchar(max)列创建计算列?

我想在表1中根据Title使表2中的docId = DocId成为计算列。我一直试图在SSMS中将它添加为计算列,它不会让我。

表1

AssetId  Title   DocId
========================

表2

DocId  Title      
=========================
5      Disaster       
10     Recovery        
15     Pending      

2 个答案:

答案 0 :(得分:2)

计算列的定义明确指出列必须位于同一个表中(here)。

你可能想要的是一个观点。

create view vw_table1 as
    select t.AssetId, d.Title, t.docid
    from table1 t left outer join
         table2 d
         on t.docid = d.docid

答案 1 :(得分:1)

您无法使用其他表列创建计算列。但您可以将表1定义为 AssetId,DocId并根据需要创建视图。

CREATE VIEW YouVIEW
AS
SELECT T1.AssetId, T1.DocId, T2.Title
FROM Table1 T1
    JOIN Table2 T2
       ON T1.DocId = T2.DocId

这是参数化的内联函数

CREATE FUNCTION dbo.GetValue (@DocId INT)
RETURNS TABLE
AS
RETURN
    (SELECT T1.AssetId, T1.DocId, T2.Title 
     FROM Table1 T1 
        JOIN Table2 T2 
           ON T1.DocId = T2.DocId 
     WHERE T1.DocID = @DocId
    )
GO