ID MatchID phone MPhone date Mdate
-----------------------------------------
C1 C2 1234 1234 5-Jan 1-Jan
C2 C3 1234 1234 1-Jan 3-Jan
C3 C4 1234 1234 3-Jan 4-Jan
我有一个如上所示的数据集,我正在尝试根据电话号码查找主记录。如果我们根据电话号码查看数据C1 = c2 = c3 = c4。基于Mdate(最近的日期是5-jan,因此C1是主记录)。我正在尝试使用cte过滤主记录,基于C1.phone = C2.Mphone加入。任何有关Select查询的帮助都将不胜感激
output
ID phone date Type
-----------------------------------------
C1 1234 5-Jan M
C2 1234 1-jan NM
C3 1234 3-jan NM
c4 1234 4-Jan NM
`
答案 0 :(得分:0)
你真的不需要CTE来实现这一目标。请检查以下查询:
declare @table table
(ID nvarchar(50), MatchID nvarchar(50), phone nvarchar(50),
MPhone nvarchar(50), [date] nvarchar(50), Mdate nvarchar(50));
insert into @table values
('C1','C2','1234','1234','5-Jan','1-Jan'),
('C2','C3','1234','1234','1-Jan','3-Jan'),
('C3','C4','1234','1234','3-Jan','4-Jan');
SELECT ID, phone, [date], MatchID,
CASE WHEN EXISTS (SELECT MatchID from @table as b where b.MatchID = a.ID)
THEN 'NM'
ELSE 'M'
END as [Type]
FROM @table as a;
/* OUTPUT
ID phone date MatchID Type
-- ----- ----- ------- ----
C1 1234 5-Jan C2 M
C2 1234 1-Jan C3 NM
C3 1234 3-Jan C4 NM
*/