簡體   English   中英

計算字段,基於2個ID的SELECT

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM