I work on SQL server 2012 I face issue I can't display Part Number with Mask related for family
CREATE TABLE [dbo].[Partspc](
[PortionKey] [nvarchar](255) NULL,
[GroupID] [float] NULL,
[familyid] [float] NULL
) ON [PRIMARY]
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'T496', 1, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'X', 2, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'B', 2, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'754', 3, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'755', 3, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'K', 4, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'M', 4, 7524090)
INSERT [dbo].[Partspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'blank', 4, 7524090)
CREATE TABLE [dbo].[Masksspc](
[PortionKey] [nvarchar](255) NULL,
[GroupID] [float] NULL,
[familyid] [float] NULL
) ON [PRIMARY]
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'T496', 1, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'X', 2, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'B', 2, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'754', 3, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'755', 3, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES (N'_', 4, 7524090)
INSERT [dbo].[Masksspc] ([PortionKey], [GroupID], [familyid]) VALUES ('blank', 4, 7524090)
DECLARE @GetFinalResultParts as table
( [familyid] [int] not NULL INDEX IXkfamily NONCLUSTERED,
[GroupID] [int] not NULL INDEX IXkgroup NONCLUSTERED,
[PartNumber] [nvarchar](200) NOT NULL INDEX IXkpart NONCLUSTERED
)
insert into @GetFinalResultParts
SELECT distinct r.familyid,r.GroupID,IIF(r.PortionKey='blank','',r.PortionKey)
FROM dbo.Partspc r with(nolock)
;WITH cte AS (
SELECT t1.familyid,t1.GroupID,cast((t1.PartNumber) as nvarchar(200)) PartNumber
FROM @GetFinalResultParts t1
WHERE t1.GroupID = 1
UNION ALL
SELECT t.familyid,t.GroupID,cast((s.PartNumber+ t.PartNumber) as nvarchar(200)) PartNumber
FROM @GetFinalResultParts t INNER JOIN
cte s ON T.GroupID = s.GroupID + 1
)
SELECT familyid,PartNumber
into getfinaldatapc
from cte
where groupid =(select max(GroupID) from dbo.Partspc with(nolock))
group by familyid,PartNumber
DECLARE @GetFinalMasks as table
( [familyid] [int] not NULL INDEX IXkfamily NONCLUSTERED,
[GroupID] [int] not NULL INDEX IXkgroup NONCLUSTERED,
[MaskNumber] [nvarchar](200) NOT NULL INDEX IXkmask NONCLUSTERED)
insert into @GetFinalMasks
SELECT distinct m.familyid,m.GroupID,IIF(m.PortionKey='blank','',m.PortionKey)
FROM dbo.Masksspc m with(nolock)
;WITH cte AS (
SELECT t1.familyid,t1.GroupID,cast((t1.MaskNumber) as nvarchar(200)) MaskNumber
FROM @GetFinalMasks t1
WHERE t1.GroupID = 1
UNION ALL
SELECT t.familyid,t.GroupID,cast((s.MaskNumber+t.MaskNumber) as nvarchar(200)) MaskNumber
FROM @GetFinalMasks t INNER JOIN
cte s ON T.GroupID = s.GroupID + 1
)
SELECT familyid,MaskNumber
into getfinaldatapcmask
from cte
where groupid =(select max(GroupID) from dbo.Masksspc with(nolock))
group by familyid,MaskNumber
SELECT * FROM getfinaldatapc
select * from getfinaldatapcmask
Expected Result
familyid PartNumber MaskNumber
7524090 T496B754 T496B754
7524090 T496B754K T496B754_
7524090 T496B754M T496B754_
7524090 T496B755 T496B755
7524090 T496B755K T496B755_
7524090 T496B755M T496B755_
7524090 T496X754 T496X754
7524090 T496X754K T496X754_
7524090 T496X754M T496X754_
7524090 T496X755 T496X755
7524090 T496X755K T496X755_
7524090 T496X755M T496X755_
this is solution but i dont need to use like can you help me
get same result above but without using like
can i generate unique id for table getfinaldatapc by checksum or what every and generate unique id for table getfinaldatapcmask also by checksum then join between two tables by id generated if this possible
SELECT * FROM getfinaldatapc g
JOIN getfinaldatapcmask gm
ON g.familyid=gm.familyid AND (g.PartNumber=gm.MaskNumber OR
(g.PartNumber LIKE gm.MaskNumber+'%' AND LEN(g.PartNumber)=LEN(gm.MaskNumber))