0

私は、FacilityDatabaseConnection という名前のテーブルを持っています。同様に、ID、FacilityID、DatabaseTypeID、ConnectionString です。

したがって、FacilityID と DatabaseTypeID のペアを指定すると、ConnectionString が得られます。Facility テーブルと DatabaseType テーブルの両方に「名前」フィールドがあります。次のことを行うために、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

「このコンテキストではサブクエリは許可されていません。スカラー式のみが許可されています。」というエラーが表示されました。

これを達成する方法はありますか、それともそのような計算フィールドは不可能ですか?

4

3 に答える 3

2

これがSQL Serverであると仮定すると、計算列は他のテーブルを参照できないため、提案していることは不可能です。

http://msdn.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspxも参照してください。

代わりに、ビュー/関数/ストアド プロシージャを使用する必要があります。

于 2013-08-01T17:56:22.337 に答える
0

次のことができます

SELECT
    (SELECT count(*) FROM table1) as new_column_name,
    col1,
    col2
FROM
    table2
于 2013-08-01T17:59:21.293 に答える