cancel
Showing results for
Did you mean:
Frequent Visitor

## Date difference between values in same column

Hi everyone!

I'm still learning DAX and I was wondering if the collective minds of this forum could help me out with coding a custom column that I've been having difficulty with. I feel like my issue is relatively simple, but I haven't come across any posts on this forum which relate.

I'm trying to code a custom column which generates the number of days between two dates. The two dates are located in the same column, and I want to find the number of days between two chronologically adjacent dates when there are multiple date values - eg. the number of days between date 1 and date 2, date 2 and date 3, date 3 and date 4, etc. (when date 1 is the earliest date and date 4 is the latest date). This needs to be done for each unique patient ID value.

I've included a mock-up of what I'm trying to accomplish below.

This is what it currently looks like.This is what I want it to look like.

I'd appreciate any help I can get. Thank you!

1 ACCEPTED SOLUTION
Community Champion

@mblydt-hansen

You could use this calculated column

```Column =
VAR temp =
TOPN (
1,
FILTER (
Table1,
Table1[Patient ID] = EARLIER ( Table1[Patient ID] )
&& Table1[Date of Visit] < EARLIER ( Table1[Date of Visit] )
),
[Date of Visit], DESC
)
RETURN
DATEDIFF ( MINX ( temp, [Date of Visit] ), Table1[Date of Visit], DAY )```

Regards
Zubair

13 REPLIES 13
New Member

Hi All,

I'm looking for a support.

I want to calculate number of days between first and last date in the same column where I'm having multiple same ID entries with multiple dates

Can I get support with the DAX function logic? 🙏

Helper I

@Zubair_Muhammad is there any way of adding another perameter in your formula to only count the daydiff between the Closed Won opportunities

Community Champion

@mblydt-hansen

You could use this calculated column

```Column =
VAR temp =
TOPN (
1,
FILTER (
Table1,
Table1[Patient ID] = EARLIER ( Table1[Patient ID] )
&& Table1[Date of Visit] < EARLIER ( Table1[Date of Visit] )
),
[Date of Visit], DESC
)
RETURN
DATEDIFF ( MINX ( temp, [Date of Visit] ), Table1[Date of Visit], DAY )```

Regards
Zubair

Helper I

Nearly 5 years later this answer got me out of a jam, thanks so much!

New Member

Hello Zubair,

I have similar requirement just that in first column i have user name instead of user id but the solution is not working for me. 7th and 8th line of formula below is not accepting parameter after EARLIER. Please advise

``` Table1[Patient ID] = EARLIER ( Table1[Patient ID] )
&& Table1[Date of Visit] < EARLIER ( Table1[Date of Visit] )```

Regards,

Kriti

Anonymous
Not applicable

Hi there,

Do you have any advise for my issue?

This code works to get the same output for my dataset, however I need the 'number of days since last visit' to become 'days until next visit'. Essentially meaning all values move up by 1 row. So in the example above the result '5' moves from row 3 to row 2. This is because I have a further column to consider of 'treatment type' per patient ID and need to be able to graphically present the mean time until next visit per treatment type, so I need the 'days until next visit' result in the same row as 'treatment type.'

Frequent Visitor

Unlike many accepted solutions in the whole forum.

This actually works.

Thanks, Zubair for sharing your knowledge.

Anonymous
Not applicable

Hi,

I have a similar problem. I have 3 columns, one with different products IDs, one with different status and one with dates, which replicate lines adding one day until the product status changes. So I want to calculate the difference between the max date and min date for determined product ID and status.

I applied something similar:

Column =
VAR temp =
TOPN (
1,
FILTER (
Teste,
Teste[Work Item Id] = EARLIER ( Teste[Work Item Id] ) && Teste[State] = EARLIER ( Teste[State] )
&& Teste[Date] < EARLIER ( Teste[Date] )
),
[Date], DESC
)
RETURN
DATEDIFF ( MINX ( temp, [Date] ), Teste[Date], DAY )

Thank you!
Anonymous
Not applicable

Hey,
Is there a way to get Date value instead of Date difference as output?

@mblydt-hansen

You could use this calculated column

```Column =
VAR temp =
TOPN (
1,
FILTER (
Table1,
Table1[Patient ID] = EARLIER ( Table1[Patient ID] )
&& Table1[Date of Visit] < EARLIER ( Table1[Date of Visit] )
),
[Date of Visit], DESC
)
RETURN
DATEDIFF ( MINX ( temp, [Date of Visit] ), Table1[Date of Visit], DAY )```

Helper I

Hi,

I have followed your footsteps to recreate this DAX script and the following errors are being popped out: (in Red)

```Frequency =
VAR temp =
TOPN(1, FILTER(
&& Freq[new_Transaction_Date] < EARLIER( Freq[new_Transaction_Date])
),
Freq[new_Transaction_Date], DESC
)
return
DATEDIFF(MINX(temp, Freq[new_Transaction_Date]), Freq[new_Transaction_Date], DAY)```

Do you minf revieing my code?

Helper V

I have the same problem how you solve it?

Frequent Visitor

This is great - I'm getting exactly what I had hoped for. Thank you so much for your help!

Community Champion

@mblydt-hansen

see attached file as well

Regards
Zubair

Announcements

#### Power BI September 2023 Update

Take a look at the September 2023 Power BI update to learn more.

#### Learn Live: Event Series

Join Microsoft Reactor and learn from developers.

#### Exclusive opportunity for Women!

Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!

#### Power Platform Conference-Power BI and Fabric Sessions

Join us Oct 1 - 6 in Las Vegas for the Microsoft Power Platform Conference.

Top Solution Authors
Top Kudoed Authors