Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

SQL query to distinct one column which has different date

I have a SQL query as you can see

SELECT DISTINCT [WB_ID] FROM [dbo].[Entity]  
WHERE 
(
1 = CASE  WHEN audit_user_id LIKE'%' + '' + '%' THEN 1
WHEN '' = '' OR '' IS NULL THEN 1
ELSE 0
END  

AND  
1 = CASE  WHEN CONVERT(date, audit_date) BETWEEN CONVERT(date, '') AND CONVERT(date, '') THEN 1
WHEN '' = '' OR '' IS NULL THEN 1
ELSE 0  
END

AND  1 = CASE  WHEN audit_mode = '' THEN 1
WHEN '' = '' OR '' IS NULL OR '' = 'All' THEN 1
ELSE 0  
END
)

and the result is like

WB_ID
1864
1871
1873
1885
1886
1887
1888

each of these WB_ID in the table are repeat more than one with different "audit-date" .And then when I add "audit-date" and select like this

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

change select part to this

SELECT DISTINCT [WB_ID],audit_date FROM [dbo].[Entity] 

my output is like this


| WB_ID | audit-date                    |
| ----- | ----------------------------- |
| 1864  | 2022-09-07 10:43:54.8600000   |
| 1864  | 2022-09-05 01:07:58.5730000   |
| 1871  | 2022-09-06 13:35:11.0430000   |
| 1871  | 2022-09-07 10:35:32.0870000   |
| 1871  | 2022-09-07 08:21:50.0900000   |
| 1871  | 2022-09-06 13:45:31.6800000   |
| 1873  | 2022-09-07 10:35:32.0870000   |
| 1873  | 2022-09-07 08:21:50.0900000   |
| 1873  | 2022-09-06 13:45:31.6800000   |
| 1885  | 2022-09-06 13:45:31.6800000   |
| 1885  | 2022-09-07 10:35:32.0870000   |
| 1885  | 2022-09-07 08:21:50.0900000   |
| 1885  | 2022-09-06 13:45:31.6800000   |
| 1886  | 2022-09-07 10:35:32.0870000   |
| 1886  | 2022-09-07 08:21:50.0900000   |
| 1886  | 2022-09-06 13:45:31.6800000   |
| 1887  | 2022-09-07 10:35:32.0870000   |
| 1887  | 2022-09-07 08:21:50.0900000   |
| 1887  | 2022-09-06 13:45:31.6800000   |
| 1888  | 2022-09-07 08:21:50.0900000   |
| 1888  | 2022-09-06 13:45:31.6800000   |

Now I want to show just Distinct "WB_ID" ,but ORDER it BY "audit-date" and show the one which has a newest date at the top

>Solution :

select   wb_id
from    (select  *
                 ,row_number() over(partition by wb_id order by audit_date desc) as rn
         from t) t
where    rn = 1
order by audit_date desc
wb_id
1864
1871
1873
1885
1886
1887
1888

Fiddle

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading