What sound's quite a simple question is actually quite a tricky problem. This is because you have nested columns within your crosstab.
I will assume that you have built your crosstab by nesting measures Revenue and Difference under the year.
If I simulate your problem with Go Sales with a relational data source.
Here is the original crosstab in design mode:

and gives this data :

We want to hide the Difference Column in everything but the last column. I have simulated this by just using a conditional style based on the year.

You can see in this conditional style that the selected items are only visible. And when this runs it produces :

This has indeed hidden two of the difference columns! We only have one difference column. But all of the columns have been shifted to the left. The revenue columns are no longer lined up with the year columns! We have three Revenue columns and one difference column.
And this is why this problem is really complex for nested columns. Whilst we can hide columns, all column get shifted across!
Because of the nesting I don't believe we can solve this problem using the original crosstab design and conditional styles.
But there IS a solution. It's a bit complicated, but it is possible.

How did I achieve this?
The trick is in the data. Instead of nesting measures, I have nested a data item:

If I look at the data and pick a country, then the rows of data I get back for this are :

You can see I only get a Difference Row in 2018 - the last year. And this is the trick, you need to get your data looking like this.
You need your query to return a Revenue row for every year, and a difference row for only the last year.
In this example I have achieved this like so:
My crosstab is based on Query 1 :

Query 1 is a union of a Revenue Query, and a Difference Query.
The revenue query looks like:

- You can see it includes all years.
- The Measure Name column simply contains 'Revenue'
- The Measure column simply contains the revenue measure.
The difference query looks like:

- It only contains the last year
- Measure name is simply 'Difference'
- The Measure contains the difference calculation.
Obviously these are simple examples and your query for difference will need to do something like Year = Maximum( Year ).
But this is the framework for achieving what you want.
I have attached this example report.
------------------------------
Marc Reed
Reporting Lead
------------------------------
Original Message:
Sent: Mon March 31, 2025 03:26 AM
From: Max Ray
Subject: Hide/remove column in Cross tab report
Hi, I have following report in Cognos. Where 202402 and 202502 are coming from field "Period", Global is coming from field "Visibility", Sales is coming from field "Sales" and Field "Difference" is a calculated field. Now my requirement is I want to hide/remove field "Difference" from Last Year Period and will show only for current year. Could you please let me how can I do this? Thanks in Advance.
Current Report:
| 202402 | 202502 |
| Global | Global |
| Sales | Difference | Sales | Difference |
USA | 1000 | 200 | 1200 | 100 |
UK | 2000 | 300 | 2500 | 200 |
Poland | 2500 | 350 | 3000 | 300 |
Required Report
| 202402 | 202502 |
| Global | Global |
| Sales | Sales | Difference |
USA | 1000 | 1200 | 100 |
UK | 2000 | 2500 | 200 |
Poland | 2500 | 3000 | 300 |
------------------------------
Max Ray
------------------------------