Я довольно новичок в MS SQL, но мне приходится много работать с ним сейчас.Мне нужно понять, что здесь происходит:
BEGIN TRANSACTION loadHalfdayAbsences;
INSERT INTO @halfDayAbsences
([AbsencePart],
[AbsenceId],
[DeleteDate],
[LastChangeDate]
)
SELECT CASE ap.AbsencePart
WHEN 1
THEN a.AbsenceStart
WHEN 3
THEN a.AbsenceEnd
ELSE CASE
WHEN a.AbsenceStartHalfDay = 1
THEN DATEADD(DAY, 1, a.AbsenceStart)
ELSE a.AbsenceStart
END
END AS newEnd,
CASE ap.AbsencePart
WHEN 1
THEN 0.50
WHEN 2
THEN 1.00
WHEN 3
THEN 0.50
END AS newDuration,
[ap].[AbsencePart],
[a].[AbsenceId],
[a].[EmployeeId],
FROM
(
SELECT AbsencePart
FROM(VALUES(1), (2), (3)) AS t(AbsencePart)
) AS ap
INNER JOIN dwh.Absence AS a ON 1 = 1
WHERE AbsenceType IN
(
SELECT AbsenceType
FROM @AbsenceType4TimeTac
)
В частности:
FROM
(
SELECT AbsencePart
FROM(VALUES(1), (2), (3)) AS t(AbsencePart)
) AS ap
INNER JOIN dwh.Absence AS a ON 1 = 1
WHERE AbsenceType IN
(
SELECT AbsenceType
FROM @AbsenceType4TimeTac
)
- Что делает эта часть?
- Что делают ЗНАЧЕНИЯздесь для меня?
- Что происходит с данными?
- Выбирается ли он, но только поля, в которых есть 1, 2 или 3?Или что происходит с VALUES?
Спасибо за любой вклад заранее :)