[英]Calculated field, SELECT based on 2 IDs
我有一个表,名为FacilityDatabaseConnection,类似,ID,FacilityID,DatabaseTypeID,ConnectionString
因此,给定FacilityID和DatabaseTypeID对,您将获得一个ConnectionString。 设施表和数据库类型表都具有“名称”字段。 我想在FacilityDatabaseConnection中创建一个“名称”字段来执行以下操作,
SELECT (dbo.Facility.Name+' - '+dbo.DatabaseType.Name) as Name
FROM dbo.FacilityDatabaseConnection
INNER JOIN dbo.Facility
ON dbo.FacilityDatabaseConnection.FacilityID = dbo.Facility.ID
INNER JOIN dbo.DatabaseType
ON dbo.FacilityDatabaseConnection.DatabaseTypeID = dbo.DatabaseType.ID
这样它就返回“ FacilityName-DatabaseType”
这可以作为查询,但是可以将其设为字段吗?
我试过了,
ALTER TABLE dbo.FacilityDatabaseConnection
ADD Name AS (SELECT (dbo.Facility.Name+' - '+dbo.DatabaseType.Name) as Name
FROM dbo.FacilityDatabaseConnection
INNER JOIN dbo.Facility
ON dbo.FacilityDatabaseConnection.FacilityID = dbo.Facility.ID
INNER JOIN dbo.DatabaseType
ON dbo.FacilityDatabaseConnection.DatabaseTypeID = dbo.DatabaseType.ID) PERSISTED
这给了我一个错误“在此上下文中不允许子查询。仅允许标量表达式”。
有没有办法做到这一点,或者这样的计算字段不可能?
假设这是SQL Server,则计算列不能引用其他表,因此您所建议的是不可能的。
另请参阅http://msdn.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx
您应该改用视图/函数/存储过程。
有一种秘密方法可以使计算列访问另一个表。
即创建一个定义字段的用户定义函数。 然后,UDF可以访问另一个表。
alter语句类似于:
ALTER TABLE dbo.FacilityDatabaseConnection
ADD Name AS udf_getFacilityName(FacilityId);
您可以执行以下操作
SELECT
(SELECT count(*) FROM table1) as new_column_name,
col1,
col2
FROM
table2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.