[英]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.