This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
Good afternoon,
I need to identify the rows that have the same ID, plan A in the later year and a different plan sameperiodlastyear.
Below is an example:
Table A (what I have) is a comprehensive list of all IDs, plans, and dates. I need Table B where I only get the two (if exist) ID where the later date was plan A and a different plan sameperiodlastyear.
I've tried several formulas and can get close but it won't list only the two rows I need per ID (if exist under the above conditions).
Thank you in advance!
Solved! Go to Solution.
Hi @Marvhall ,
Based on my testing, please try the following methods:
1.Create the new column to filter the changed plan.
SamePeriodLastYear =
CALCULATE(
MAX('Table A'[Plan]),
FILTER(
'Table A',
('Table A'[ID] = EARLIER('Table A'[ID]) &&
YEAR('Table A'[Date]) = YEAR(EARLIER('Table A'[Date])) - 1 &&
MONTH('Table A'[Date]) = MONTH(EARLIER('Table A'[Date])) && EARLIER('Table A'[Plan]) = "A")
)
)
2.Create the new column to filter the rows.
Plan changed =
var _sameperiod = VALUES('Table A'[SamePeriodLastYear])
var _date = SELECTEDVALUE('Table'[Date])
RETURN
IF(
('Table A'[Plan] = "A" && 'Table A'[Date] = DATE(2024, 7 ,1)) || ('Table A'[Plan] IN _sameperiod && 'Table A'[Date] = DATE(2023,7,1)),
1,
0
)
3.Create new table.
Table B = FILTER('Table A', 'Table A'[Plan changed] = 1)
4.Table B is shown below.
Best Regards,
Wisdom Wu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Marvhall ,
Based on my testing, please try the following methods:
1.Create the new column to filter the changed plan.
SamePeriodLastYear =
CALCULATE(
MAX('Table A'[Plan]),
FILTER(
'Table A',
('Table A'[ID] = EARLIER('Table A'[ID]) &&
YEAR('Table A'[Date]) = YEAR(EARLIER('Table A'[Date])) - 1 &&
MONTH('Table A'[Date]) = MONTH(EARLIER('Table A'[Date])) && EARLIER('Table A'[Plan]) = "A")
)
)
2.Create the new column to filter the rows.
Plan changed =
var _sameperiod = VALUES('Table A'[SamePeriodLastYear])
var _date = SELECTEDVALUE('Table'[Date])
RETURN
IF(
('Table A'[Plan] = "A" && 'Table A'[Date] = DATE(2024, 7 ,1)) || ('Table A'[Plan] IN _sameperiod && 'Table A'[Date] = DATE(2023,7,1)),
1,
0
)
3.Create new table.
Table B = FILTER('Table A', 'Table A'[Plan changed] = 1)
4.Table B is shown below.
Best Regards,
Wisdom Wu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Marvhall, give calculated table a try, and if you encounter any issues, let me know.
create a calculated table:
TableB =
VAR CurrentPeriod =
SELECTCOLUMNS(
FILTER('TableA', 'TableA'[Date] = DATE(2024, 7, 1)),
"ID", 'TableA'[ID],
"Plan", 'TableA'[Plan],
"Date", 'TableA'[Date]
)
VAR PreviousPeriod =
SELECTCOLUMNS(
FILTER('TableA', 'TableA'[Date] = DATE(2023, 7, 1)),
"ID", 'TableA'[ID],
"Plan", 'TableA'[Plan],
"Date", 'TableA'[Date]
)
RETURN
FILTER(
NATURALINNERJOIN(CurrentPeriod, PreviousPeriod),
CurrentPeriod[Plan] = "A" &&
PreviousPeriod[Plan] <> "A"
)
Did I answer your question? If so, please mark my post as the solution! ✔️
Your Kudos are much appreciated! Proud to be a Solution Supplier!
Thank you. I get the error: The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value. Same issue I ran into before. I tried using sumx or another aggregate but that didn't work either.
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 4 | |
| 4 | |
| 3 | |
| 3 | |
| 3 |
| User | Count |
|---|---|
| 9 | |
| 8 | |
| 8 | |
| 6 | |
| 6 |