Я пытаюсь создать запрос SQL для создания отчета из моей базы данных.
Каждые пять или более минут в мою БД добавляется новая запись, длина этой записи - время, которое она прошла, и сдвиг, когда она была сделана.
Ранее имел этот код:
SELECT
SUM(DataEntry.Length) AS Length,
COUNT(DISTINCT MicrotecDataEntry.DateTime) AS NumberTimeEntry,
Shift,
CONVERT(DATE, DATEADD(mi, -360, DateTime)) AS Expr1
FROM
DataEntry
WHERE
(DateTime > DATEADD(d, - 28, DATEADD(mi, 390, CONVERT(datetime, CONVERT(date, DATEADD(mi, - 390, GETDATE()))))))
AND (DateTime < DATEADD(d, - 0, DATEADD(mi, 390, CONVERT(datetime, CONVERT(date, DATEADD(mi, - 390, GETDATE()))))))
GROUP BY Shift,
CONVERT(date, DATEADD(mi, - 360, MicrotecDataEntry.DateTime))
Наша ночная смена работает в два разных дня, поэтому, чтобы сохранить ее в один рабочий день, мы убираем 6 часов с этой даты, поэтому ночная смена начинается в 00:00 AM
с этого дня.
Но теперь по некоторым причинам я должен убрать 12 часов для ночной смены и 6 часов для других смен. Поэтому я хотел бы сделать что-то вроде:
SELECT
SUM(ataEntry.Length) AS Length,
COUNT(DISTINCT DateTime) AS NumberTimeEntry,
MicrotecTimeQuarter.Shift,
CASE
WHEN MicrotecTimeQuarter.Shift = 'shift 2'
THEN CONVERT(DATE, DATEADD(mi, -720, DateTime))
ELSE CONVERT(DATE, DATEADD(mi, -360, DateTime))
END AS Expr1
FROM
DataEntry
MicrotecTimeQuarter.Id
WHERE
(DateTime > DATEADD(d, - 7, DATEADD(mi, 390, CONVERT(datetime, CONVERT(date, DATEADD(mi, - 390, GETDATE()))))))
AND (DateTime < DATEADD(d, - 0, DATEADD(mi, 390, CONVERT(datetime, CONVERT(date, DATEADD(mi, - 390, GETDATE()))))))
GROUP BY Shift,
CASE
WHEN Shift = 'shift 2'
THEN CONVERT(DATE, DATEADD(mi, -720, DateTime))
ELSE CONVERT(DATE, DATEADD(mi, -360, DateTime))
END
Но, похоже, синтаксис неправильный, и я получаю сообщение
MicrotechDataEntry.DateTime недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY
Я новичок в SQL, поэтому не знаю, в чем проблема. Есть ли у вас идеи о том, что вызывает проблему и как я могу ее решить? Спасибо!