Ниже у меня есть таблицы и запросы, которые выводят следующее
Table1
EmployeeID | StartDateTimestamp | CohortID | CohortName
---------- | ------------------ | -------- | ----------
1 | 20080101 01:30:00 | 1 | Peanut
1 | 20090204 01:01:00 | 2 | Apple
2 | 20190107 05:52:14 | 1 | Peanut
3 | 20190311 02:35:26 | 2 | Apple
Сотрудник
EmployeeID | HireStartName | StartDateTimestamp2
---------- | ------------- | -------------------
1 | HiredStart | 20080501 01:30:00
1 | DeferredStart | 20090604 01:01:00
2 | HiredStart | 20190115 05:52:14
3 | HiredStart | 20190330 02:35:26
Запрос
select
t.cohortid,
min(e.startdatetimestamp2) first,
max(e.startdatetimestamp2) last
from table1 t
inner join employee e on e.employeeid = t.employeeid
group by t.cohort_id
Выходные данные
ID | FIRST | LAST
1 |20190106 12:00:05 |20180214 03:45:12
2 |20180230 01:45:23 |20180315 01:45:23
Моя попытка:
SELECT DATE_DIFF(first, last, Day), ID, max(datecolumn1) first, min(datecolumn1) last
Ошибка: нераспознанное имя. Как ввести псевдоним ссылки первым и последним в Date_Diff? Нужно ли выводить таблицу?
Ясность: стараюсь не вводить даты, так как я ищу, чтобы найти разность дат в первом и последнем столбцах для столько строк, сколько имеется данных.
Этот ответ обсуждался здесь: Разница в дате между последовательными строками
DateDiff устарел, и теперь это Date_Diff (первый, последний, день)
Затем я попытался:
SELECT ID, DATE_DIFF(PARSE_DATE('%y%m%d',t.first), PARSE_DATE('%y%m%d',t.last), DAY) days
FROM table
Не удалось проанализировать входную строку "20180125 01:00:05"
Попробовал
SELECT CohortID, date_diff(first,last,day) as days
FROM (select cohortid,min(startdatetimestamp2) first,
max(startdatetimestamp2) last
FROM employee
JOIN table1 on table1.employeeid = employee.employeeid
group by cohortid)
Я получаю дни, не найденные ни сторона соединения