Sql server 具有不同元素的SQl server重复连接问题
对不起,我再次发帖,还有一个要求 任何人都可以帮助我:我试图加入重复的值,但它不是我想要的Sql server 具有不同元素的SQl server重复连接问题,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,对不起,我再次发帖,还有一个要求 任何人都可以帮助我:我试图加入重复的值,但它不是我想要的 DROP TABLE IF EXISTS #TestTable1 DROP TABLE IF EXISTS #TestTable2 CREATE TABLE #TestTable1 ([No] varchar(50),[Value1] float,[Desc] varchar(50)) insert into #TestTable1 ([No],[Value1],[Desc]) Values (N'
DROP TABLE IF EXISTS #TestTable1
DROP TABLE IF EXISTS #TestTable2
CREATE TABLE #TestTable1 ([No] varchar(50),[Value1] float,[Desc] varchar(50))
insert into #TestTable1 ([No],[Value1],[Desc])
Values
(N'123953',300.02,N'Extra Pay')
,(N'123953',427.2,N'Basic Hours')
,(N'123953',106.8,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',105.6,N'Basic Hours')
CREATE TABLE #TestTable2 ([No] varchar(50),[Value2] float,[Desc] varchar(50))
insert into #TestTable2 ([No],[Value2],[Desc])
Values
(N'123953',200.02,N'Extra Pay')
,(N'123953',553.02,N'Basic Hours')
,(N'123953',446.67,N'Basic Hours')
,(N'123953',427.2,N'Basic Hours')
,(N'123953',106.8,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',213.6,N'Basic Hours')
,(N'123953',105.6,N'Basic Hours')
期望输出:
[No],[Desc],[Value1],[Value2],[MatchResult]
,(N'123953',N'Extra Pay',300.02,200.02, False)
,(N'123953',N'Basic Hours',427.2,427.2, True)
,(N'123953',N'Basic Hours',106.8,106.8, True)
,(N'123953',N'Basic Hours',213.6,213.6, True)
,(N'123953',N'Basic Hours',213.6,213.6, True)
,(N'123953',N'Basic Hours',213.6,213.6, True)
,(N'123953',N'Basic Hours',213.6,NULL,NULL)
,(N'123953',N'Basic Hours',105.6,105.6, True)
--在我看来,您应该能够将行号强制到重复的行上,然后实现一对一的连接,右边没有匹配项为空
SELECT Q1.No, Q1.[desc], Q1.[value1],q2.[value2] FROM
(SELECT [NO] ,
value1,
[desc],
ROW_NUMBER() over(partition by [NO] , value1, [desc] order by [no]) RN
FROM #TestTable1
) Q1
LEFT JOIN
(SELECT [NO] ,
value2,
[desc],
ROW_NUMBER() over(partition by [NO] , value2, [desc] order by [no]) RN
FROM #TestTable2
) Q2
ON Q1.Value1=Q2.Value2 AND
Q1.[No] = Q2.[NO] AND
Q1.[desc] = Q2.[Desc] AND
Q1.RN = Q2.rn
你尝试了什么?结果出了什么问题?。上一个问题中被接受的答案有什么问题?为什么你没有包括你正在使用的代码?为了获得新的预期结果,您尝试/改变了哪些内容?堆栈溢出不是免费的编码和支持服务,请不要将其视为免费服务。如果您不知道代码是如何工作的,那么就不应该使用提供给您的代码;支持它是你的责任,而不是这里的志愿者。@Larnu,我知道,但我现在有不同的要求。很抱歉,要求更改是可以的,但请显示您尝试满足新要求的情况;使用之前提供的代码或您自己的全部尝试。您在300.02200.02上的匹配是否为打字错误?否则我不清楚什么是匹配/不匹配。例如,为什么“备用”213.6会加入到nothing中?