Forum Discussion
Comparing Sales Orders (rows) and keeping the highest version number - two column filtering
Hi,
I have got two columns, "Sales Orders" and "Version number". The sales have a correlating ID in this format: "M00123456". The data comes from an Access database. The version number is a whole number from 1 to infinity.
Every order have a version number. When the order changes (for instance, when the shipping address is updated) a new record is added and the old record is kept as-is (the user adds a new record in the Access Web App). This means that I need to do a filter that searches for a specific order with a version number higher than 1, with that I wan't to remove every version but the newest/highest version number. But it can't be a static search for a sales order, I must do it for every sales order.
Example:
Sales Order Version number
M00123456 1 <--- Do nothing
M00234567 1 <--- Discard
M00234567 2 <--- Display this one
M00345678 1 <--- Discard
M00345678 2 <--- Discard
M00345678 3 <--- Display this one
.... ...
For instance, Sales Order "M00234567" - I only wan't to display the latest version, the one with version number 2. Essentially I wan't to display this:
Sales Order Version number
M00123456 1 <--- Do nothing
M00234567 2 <--- Display this one
M00345678 3 <--- Display this one
Essentially, I need to discard every sales order but the one with the highest version number for every specific Sales Order ID.
Is this even possible to do? It feels like I've tried everything I can think of... Anyone with an idea how to solve this?
Thanks in advance for any help!
Sincerely,
TM
Hi TM,
I can only agree with itchyeyeballs: Grouping in combination with a MAX function should solve your problem. I copied your table into Excel and then pulled it into Power Query. My script looks like this
let Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], #"Change Type" = Table.TransformColumnTypes(Source,{{"Sales Order ", type text}, {" Version number", Int64.Type}}), #"Group Rows" = Table.Group(#"Change Type", {"Sales Order "}, {{"HighestVersionNumber", each List.Max([#" Version number"]), type number}}) in #"Group Rows"The result is the following:
Hope that helps.
Regards,
Lars
6 Replies
- konstantinos
Memorable Member
- itchyeyeballs
Impactful Individual
- konstantinos
Memorable Member
itchyeyeballs Haha!! Actually @LarsSchreiber was simpler than mine and didn't had time to imrove mine to show correct totals.
But tell us your thinking because it always useful, and if not in this usually in other problems
- itchyeyeballs
Impactful Individual
I typed out a soultion for using the group by functionality (either in Access or power query) to create a lookup table, using the max function to only return the highest version number.
May be a way to go if TM doesn't wan't the other order data in his model at all I suppose.
- LarsSchreiber
Responsive Resident
Hi TM,
I can only agree with itchyeyeballs: Grouping in combination with a MAX function should solve your problem. I copied your table into Excel and then pulled it into Power Query. My script looks like this
let Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], #"Change Type" = Table.TransformColumnTypes(Source,{{"Sales Order ", type text}, {" Version number", Int64.Type}}), #"Group Rows" = Table.Group(#"Change Type", {"Sales Order "}, {{"HighestVersionNumber", each List.Max([#" Version number"]), type number}}) in #"Group Rows"The result is the following:
Hope that helps.
Regards,
Lars