I have a table which i want to assign an ID for each unique record based on date, name & branch columns.
CREATE TABLE [TEST].[dbo].[uniqueID] (
[DATE] datetime,
[Name] nvarchar(50),
[Branch] nvarchar(50),
)
INSERT INTO [Test].[dbo].[uniqueID]
([DATE]
,[Name]
,[Branch]
)
VALUES
('2016-04-19','Apple','BranchA')
,('2016-04-19','Apple','BranchA')
,('2016-04-19','Apple','BranchB')
,('2016-04-20','Apple','BranchA')
,('2016-04-20','Orange','BranchA')
,('2016-04-20','Orange','BranchA')
,('2016-04-20','Apple','BranchB')
I tried with Rank, DENSE_RANK, ROW_NUMBER functions. But i could not get what i wanted.
SELECT *
,RANK() OVER(PARTITION BY [DATE],[Name],[Branch] ORDER BY [DATE],[Name],[Branch]) AS 'RANK'
,DENSE_RANK() OVER(PARTITION BY [DATE],[Name],[Branch] ORDER BY [DATE],[Name],[Branch]) AS 'DENSE_RANK'
,ROW_NUMBER()
OVER (PARTITION BY [DATE],[Name],[Branch] ORDER BY [DATE],[Name],[Branch]) AS Row
FROM [TEST].[dbo].[uniqueID]
I'm expecting an ID similar to below table.
Date Name Branch ID
'2016-04-19','Apple','BranchA', 1
'2016-04-19','Apple','BranchA', 1
'2016-04-19','Apple','BranchB', 2
'2016-04-20','Apple','BranchA', 3
'2016-04-20','Orange','BranchA', 4
'2016-04-20','Orange','BranchA', 4
'2016-04-20','Apple','BranchB', 5
Apreciate if someone can help on this..