This is a suggestion on how to exclude the duplicates
Test data:
DECLARE @tbl TABLE(NO INT,[COMPANY NAME] VARCHAR(100),[CONTACT NO] VARCHAR(100))
INSERT INTO @tbl
VALUES
(1,'ABC DEF PVT','1234567890'),
(2,'ABC DEF PVT.','1234567890'),
(3,'XYZ ABC LTD','987654321'),
(4,'XYZ ABC LTD PVT.','987654321'),
(5,'ABC DEF PVT','9994567890')
Query:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY SUBSTRING([COMPANY NAME],1,5),[CONTACT NO]
ORDER BY NO) AS RowNbr,
tbl.*
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
WHERE
CTE.RowNbr=1
To accomplish the same result you could also do it without a common table expression. Like this:
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY SUBSTRING([COMPANY NAME],1,5),[CONTACT NO]
ORDER BY NO) AS RowNbr,
tbl.*
FROM
@tbl AS tbl
) AS t
WHERE t.RowNbr=1
Result:
1 1 ABC DEF PVT 1234567890
1 3 XYZ ABC LTD 987654321
1 3 XYZ ABC LTD 987654321
Reference: