Как результат процедуры хранения вставить в таблицу в SQL?
У меня есть хранимая процедура, теперь я хочу, чтобы вставить результат из хранимой процедуры в таблицу EmployeeAttendance Коль(AttID,empid в,Интайм,OUTTIME,часов,долг,от OTAmount,поздно
вот моя магазинная процедура....
Что я уже пробовал:
<pre>ALTER PROCEDURE [dbo].[GetMachineAttendanceFinal5] AS BEGIN SET NOCOUNT ON; ;WITH Dates (ReportingDate) AS ( SELECT CONVERT(date, '2018-11-26 00:00:00.000', 120) AS ReportingDate UNION ALL SELECT DATEADD(day, 1, d.ReportingDate) FROM Dates d WHERE d.ReportingDate < CONVERT(date, '2018-12-25 00:00:00.000', 120)) ,CTE As ( select EmployeeDetails.EmpID,EmployeeDetails.EmpName,EmployeeDetails.OTEntitled,EmployeeDetails.Empcur,EmployeeDetails.Dhour,EmployeeDetails.LTime from EmployeeDetails where Empcur='Join' ) ,CTE4 As ( Select MachineAttendance.EmpID,MachineAttendance.MDate,MachineAttendance.INOUT from MachineAttendance ) ,cte1 AS ( SELECT CTE4.EmpID, CAST(CTE4.MDate as Date) AS [Date], CASE WHEN CTE4.INOUT = 1 THEN CTE4.MDate END AS INOUT_INTIME, CASE WHEN CTE4.INOUT = 2 THEN CTE4.MDate END AS INOUT_OUTTIME From CTE4 ), cte2 as ( select cte1.EmpID, Date, MAX(INOUT_INTIME) AS INTIME, MAX(INOUT_OUTTIME) AS OUTTIME , DATEDIFF(Hour, MAX(INOUT_INTIME), MAX(INOUT_OUTTIME)) as [Hours] FROM CTE1 GROUP BY EmpID, [Date] ) select cte.EmpID,d.ReportingDate,cte2.Date,cte2.INTIME, cte2.OUTTIME, cte2.[Hours] , CASE WHEN cte2.[Hours] >= 8 THEN 1 WHEN cte2.[Hours] = 0 THEN 0 WHEN cte2.[Hours] >= 6 THEN 0.5 END AS [Day], CASE WHEN cte2.[Hours] > CTE.Dhour then cte2.[Hours] - CTE.Dhour else 0 End as OT, CASE when cte.OTEntitled = 'Yes' AND cte2.[Hours] >= CTE.Dhour THEN (( cte2.[Hours] - 8) * 100) else 0 END AS OTAMount, Convert(varchar(10), cte2.INTIME,108) as [Time], Case When Convert(Time, cte2.INTIME,108) > cte.LTime Then 1 else 0 end as Late from cte Cross Apply Dates d Left Join cte2 ON cte2.EmpId= cte.EmpID AND cte2.Date=d.ReportingDate order by cte.EmpID asc
OriginalGriff
И что же?
Вы написали СП, вы знаете, что он делает.
Так в чем же проблема модификации его для выполнения относительно тривиальной задачи?
Member 12314309
я определил col выше в таблице посещаемости,то есть результат этого SP,этот результат я хочу вставить в таблицу employeeattendance
OriginalGriff
С риском повториться:
- И что же?
Вы написали СП, вы знаете, что он делает.
Так в чем же проблема модификации его для выполнения относительно тривиальной задачи?"
Помните, что мы не можем видеть ваш экран, мы не можем получить доступ к вашему жесткому диску, мы не можем читать ваши мысли. Мы получаем только то, что вы печатаете для работы.
Поэтому мы понятия не имеем, почему что-то оказывается трудным, особенно для тех, кто, очевидно, может писать относительно сложный SQl без каких-либо проблем ... и если мы не знаем, почему это создает вам трудности, мы не можем ответить на вопрос, который вы не задавали!
Member 12314309
Уважаемый Оригинал ,любезно не берите его на головную боль ,,,просто я просто спрашиваю о том, как результат SP, поступающий в колонку, вставить в таблицу ,
У меня есть посещаемость машины talbe,в которой сотрудник INtime и OUttime приходит 1 и 2,из этого INTIME и OUTTIME я рассчитал часы,OT,OTamount и Late, теперь эти результаты столбца я хочу вставить в другую таблицу....
OriginalGriff
Я прогнал это через Google Translate который сказал
- Я студентка, и это мое домашнее задание. Я нашел какой-то код в интернете, но я его совсем не понимаю, и он не делает именно то, что мне нужно, чтобы передать его моему учителю. Пожалуйста, сделай за меня домашнее задание."
Это верно?
CHill60
Лол! Я узнаю биты "его" кода из одного из моих решений, и некоторые из них пришли от MadMyche. Этот вампир-настоящий помощник и не прилагает никаких усилий, чтобы понять.
Member 12314309
Лолз...я нашел решение вот в чем ... Вставить в EmployeesAttendance
EXEC GetMachineAttendanceFinal5 ... но как ограничить ту запись, которая уже выходит в таблицу
ZurdoDev
Что он сказал ^
Member 12314309
я сказал ,что результат SP ,то есть значение, которое я рассчитал в SP, я хочу вставить в таблицу посещаемости сотрудников.
ZurdoDev
Но вы же написали хранимую процедуру, верно?
Так что вы можете делать в нем все, что захотите.
Вы можете выбрать * ...
а затем вставить в таблицу ...
а потом еще что-нибудь.
Member 12314309
Еще одна путаница заключается в том ,что если результат SP вставлен, то снова будет вставлена запись той же даты, так как ограничить дублирование записи одной и той же даты для каждого сотрудника
Member 12314309
Вставить в EmployeesAttendance
Старпома GetMachineAttendanceFinal5
ZurdoDev
Это будет работать, но вы должны поместить его в саму хранимую процедуру.