I have a table which has a column of dates which I want to find the difference between. I have been able to find off your site an answer that gets me the difference between
when i treid this i am getting error like: Cannot find either column "Timelapse" or the user-defined function or aggregate "Timelapse.start_date_time", or the name is ambiguous.
i replcaed 'AllDays' with 'Timelapse'
SELECT
Timelapse.[request_id],
--Timelapse.[task_code],
Timelapse.[start_date_time]-->getting error at this column
(DateDiff(day,[PreviousDate],[start_date_time]), 0) AS Days_Between
FROM
(
SELECT
[request_id],[task_code],
[start_date_time],
(
SELECT Max([start_date_time])
FROM [Monitor247].[dbo].[request_task] AS T2
WHERE
T2.[request_id] = T1.[request_id]
AND T2.[start_date_time] < T1.[start_date_time]
) AS PreviousDate
FROM [Monitor247].[dbo].[request_task] AS T1
) AS Timelapse;
Change the correlated subquery so that it returns the greatest of the earlier Pstng_Date
values for T1.Customer
This query returned what you want when tested with your sample data in Access 2007.
SELECT
AllDays.Customer,
AllDays.Pstng_Date,
Nz(DateDiff("d",[PreviousDate],[Pstng_Date]), 0) AS Days_Between
FROM
(
SELECT
Customer,
Pstng_Date,
(
SELECT Max(Pstng_Date)
FROM SAPData AS T2
WHERE
T2.Customer = T1.Customer
AND T2.Pstng_Date < T1.Pstng_Date
) AS PreviousDate
FROM SAPData AS T1
) AS AllDays;
If you will be running the query from outside an Access session, the Nz()
function will not be available. In that case, you could use an IIf()
expression instead.
IIf([PreviousDate] Is Null, 0, DateDiff("d",[PreviousDate],[Pstng_Date]))