別の select ステートメントを挿入したビューを作成し、そのステートメントに「エイリアス」を含む別のフィールドとしてラベルを付けました。
ビューは正常に実行されましたが、ビューから select ステートメントを起動しようとすると (select * from view)、次のエラーがスローされます。
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression
これで、このエラーが発生する理由がわかりました。これは、内側の選択クエリが複数の行を返すためです。複数の行が必要なため、TOP 1 に行くことはできません。
ALTER VIEW [dbo].[TestView_new]
AS
SELECT TOP ( 100 ) PERCENT
dbo.DataRepository.PeriodStatus ,
dbo.DataRepository.TimesheetName ,
dbo.DataRepository.TimesheetLineClass ,
dbo.DataRepository.TimesheetLineClassUID ,
dbo.MSP_EpmResource_UserView.ResourceName ,
dbo.MSP_EpmProject_UserView.ProjectName AS ProjectName ,
( SELECT MSP_EpmProject_UserView.ProjectName
FROM dbo.MSP_EpmProject_UserView
LEFT JOIN dbo.DataRepository ON dbo.MSP_EpmProject_UserView.[ProjectUID] = dbo.DataRepository.[ProjectUID]
WHERE LTRIM(RTRIM(dbo.DataRepository.[ProjectUID])) IS NOT NULL
OR LTRIM(RTRIM(dbo.DataRepository.[ProjectUID])) <> '') AS ProjectName2 ,
FROM dbo.DataRepository
INNER JOIN dbo.MSP_TimesheetActual ON dbo.DataRepository.TimesheetLineUID = dbo.MSP_TimesheetActual.TimesheetLineUID
LEFT OUTER JOIN dbo.MSP_EpmResource_UserView ON dbo.DataRepository.ResourceUID = dbo.MSP_EpmResource_UserView.ResourceUID
LEFT OUTER JOIN dbo.MSP_EpmProject_UserView ON dbo.DataRepository.ProjectUID = dbo.MSP_EpmProject_UserView.ProjectUID
私の質問: エラーを解決する方法はありますか?