Два оператора insert into в хранимой процедуре с тем же предложением where в SQL server
я использую два оператора insert into в одной хранимой процедуре, эта хранимая процедура будет выполняться автоматически, для первого оператора insert into я получаю все строки, но для второго оператора insert into я получаю нулевые строки из-за условия "
where P_Date NOT IN (SELECT P_Date from Tbl_EmpPunchingDetail)"Может ли кто-нибудь подсказать мне, что я должен получить только одну строку для каждой даты для каждого PIN-кода без повторения при выполнении сохраненного procdeure несколько раз для второй вставки в Оператор???? или как я могу использовать одно предложение where для обоих операторов insert into ??
Что я уже пробовал:
<pre>CREATE PROCEDURE [dbo].[sp_UpdateEmpPunchingDetailTbl] AS BEGIN --First insert into statement INSERT INTO Tbl_EmpPunchingDetail SELECT Pin_Code AS Pin_Code ,P_Date AS P_Date ,IN1 AS IN1 ,OUT1 AS OUT1 FROM [Zultime].[dbo].[TIME_SHEET] WHERE P_Date NOT IN ( SELECT P_Date FROM Tbl_EmpPunchingDetail ) AND P_Date <= dateadd(day, datediff(day, 1, GETDATE()), 0) --Second insert into statement DECLARE @mydate DATETIME SELECT @mydate = GETDATE() DECLARE @P_Date TABLE ([P_Date] DATE) INSERT INTO @P_Date SELECT DISTINCT [P_Date] FROM [Zultime].[dbo].[TIME_SHEET] WHERE [P_Date] BETWEEN CONVERT(VARCHAR(25), DATEADD(dd, - (DAY(@mydate) + 8), @mydate), 101) AND CONVERT(VARCHAR(25), DATEADD(dd, - (DAY(@mydate) - 22), @mydate), 101) INSERT INTO Tbl_EmpPunchingDetail SELECT [Pin_Code] ,P_Date ,'07:30' AS [IN1] ,'16:30' AS [OUT1] FROM [AttendanceCorrection].[dbo].[Tbl_FMOEmp] CROSS JOIN @P_Date WHERE P_Date NOT IN ( SELECT P_Date FROM Tbl_EmpPunchingDetail ) AND P_Date <= dateadd(day, datediff(day, 1, GETDATE()), 0) END