Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
LunaD
Regular Visitor

Subtract values in rows based on categories in another table

I have table 1

DateIDValue
23/02/2024x234fs21
23/02/2024d4635d2
23/02/2024a324ss54
23/02/2024d35s223

 

table 2

CategoryIDLocation
TypeAx234fsLake A
TypeBd4635dLake A
TypeAa324ssGarden
TypeBd35s22Garden

 

I want to subtract value of typeA to typeB in table 1 if IDs are in the same location and same month. Category typeA and typeB are fixed but there are many locations.
Expected new table like this:

DateIDValue
23/02/2024x234fs19
23/02/2024d4635d2
23/02/2024a324ss51
23/02/2024d35s223

 

I have been trying to create new column in the table 1 like below but does not work. I appreciate all the help and suggestion. Thank you!!

 

 

 

``` 

SubtractionResult =
VAR LocationsWithAB =
FILTER(
VALUES(table_2),
CALCULATE(COUNTROWS(table_2), table_2[Category] = "Type A") > 0 &&
CALCULATE(COUNTROWS(table_2), table_2[Category] = "Type B") > 0
)
VAR Result =
SUMX(
LocationsWithAB,
VAR CurrentLocation = table_2[Location]
VAR AccountA = CALCULATE(VALUES(table_2[ID]), table_2[Location] = CurrentLocation, table_2[Category] = "Type A")
VAR AccountB = CALCULATE(VALUES(table_2[ID]), table_2[Category] = CurrentLocation, table_2[Category] = "Type B")
VAR ConsumptionA =
CALCULATE(
SUM(table_1[Value]),
table_1[ID] = AccountA &&
table_1[Date] IN VALUES(table_1[Date])

)
VAR ConsumptionB =
CALCULATE(
SUM(table_1[consumption]),
table_1[ID] = AccountB &&
table_1[Date] IN VALUES(table_1[Date])
)
RETURN
IF(
NOT(ISBLANK(ConsumptionA)) && NOT(ISBLANK(ConsumptionB)),
ConsumptionA - ConsumptionB,
ConsumptionB
)

)
RETURN
Result
```

1 ACCEPTED SOLUTION
LunaD
Regular Visitor

Thanks for your suggestion @amitchandak !!
It's very close to what I need, just that it won't work if there are different dates in the table.
A little tweak fixed it:

Measure = if(max(Table2[Category]) ="TypeA", sum(Table1[Value])- CALCULATE(SUM(Table1[Value]),ALLEXCEPT(Table1, Table2[Location], Table1[Date]), Table2[Category]="TypeB"), SUM(Table1[Value]))
 
Cheers.

View solution in original post

2 REPLIES 2
LunaD
Regular Visitor

Thanks for your suggestion @amitchandak !!
It's very close to what I need, just that it won't work if there are different dates in the table.
A little tweak fixed it:

Measure = if(max(Table2[Category]) ="TypeA", sum(Table1[Value])- CALCULATE(SUM(Table1[Value]),ALLEXCEPT(Table1, Table2[Location], Table1[Date]), Table2[Category]="TypeB"), SUM(Table1[Value]))
 
Cheers.
amitchandak
Super User
Super User

@LunaD , Hope two tables are joined. File is attached for reference 

 

Measure = if(max(Table2[Category]) ="TypeA", sum(Table1[Value])- CALCULATE(SUM(Table1[Value]),ALLEXCEPT(Table1, Table2[Location]), Table2[Category]="TypeB"), SUM(Table1[Value]))
 
 
Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors