項目がブリッジテーブルにどのように移入されるかのテンプレートとして存在するテーブルから既存のブリッジテーブルを作成しようとしています。複数の結果を含むSQL Serverサブクエリ
dbo.ECN_ChecklistItem(ECNID(外部キーID)によって選択)の項目のリストがdbo.BusinessUnit_ChecklistItemと異なるブリッジテーブル(dbo.ECN_ChecklistItem)に新しい挿入を試みています(BusinessUnitとInUse)。
サブクエリが使用されているとき、またはサブクエリが使用されているときにサブクエリが=、!=、<、< =、>、または=表現として。
私は '='演算子ではなく 'in'演算子を含むようにクエリを変更しようとしましたが、これも成功しませんでした。私はそれを間違ってやったかもしれない。
CREATE PROCEDURE checkCurrentChecklistItemsAgainstInUseItems
--Parameters
@ECNID INT, --I need the ECNID to do the search properly.
@BU NVARCHAR(50),
@Date NVARCHAR(10), --This is the date that the checklist item was added to the ECN.
@NewStatus NVarchar(3) --This is based off of the status of the ECN, will either be '?' or 'No'
AS
BEGIN
DECLARE @System NCHAR(6)='SYSTEM'
DECLARE @Message NVARCHAR(50) = 'This value was added by the system automatically.'--Not in use.
SET NOCOUNT ON;
INSERT INTO dbo.ECN_ChecklistItem (ECNID, Required, LogBy, LogDate, Description, CheckName)
VALUES(@ECNID, @NewStatus, @System, @Date, NULL,
(Select ChecklistItem FROM dbo.BusinessUnit_ChecklistItem WHERE BusinessUnit Like @BU
EXCEPT SELECT CheckName FROM dbo.ECN_ChecklistItem WHERE ECNID Like @ECNID))
END
GO
'INSERT ... VALUES'構文は、テーブルに1つのレコードのみを挿入します。これは、あなたの望むことですか?その場合は、サブクエリ内に1つの 'CheckListItem'だけを選択してください。 「TOP 1」である。それ以外の場合は、別の構文を使用することもできます。 –
select文が1つ以上のChecklistItemを返すときに、何をしたいですか? –
ChecklistItemをdbo.ECN_ChecklistItemテーブルに挿入します。 SELECT EXCEPTクエリは複数の値を返す可能性があります。この状況を処理するための別の構造を考慮する必要がありますか? –