gpt4 book ai didi

sql-server - T-SQL : How to join tables without creating extra rows - need a one row to one row correspondance

转载 作者:行者123 更新时间:2023-12-04 00:47:03 28 4
gpt4 key购买 nike

我有一个场景,我需要连接两个 SQL 表并且正在为如何做而苦恼。假设在表 A 中我有这个:

ColA  ColB   ColC   ColD
45 55 17 45
45 55 17 47
45 55 17 49
45 55 17 51

在表 B 中我有这个:

ColA  ColB   ColC   ColE
45 55 17 55
45 55 17 56
45 55 17 57
45 55 17 58

我需要创建一个如下所示的表 - 请注意只有 4 行,而不是我使用的内部联接生成的 16 行。

ColA  ColB   ColC   ColD   ColE
45 55 17 45 55
45 55 17 47 56
45 55 17 49 57
45 55 17 51 58

我几乎没有想法。两个表将始终具有相同的行数。有没有办法使用联接来执行此操作,或者我应该遍历表 A(即获取行号)并在表 B 中获取匹配的行号?

如有任何想法,我们将不胜感激。

最佳答案

假设至少是 SQL Server 2005

WITH T1
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY ColA, ColB, ColC ORDER BY ColD)
RN
FROM TableA),
T2
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY ColA, ColB, ColC ORDER BY ColE)
RN
FROM TableB)
SELECT T1.ColA,
T1.ColB,
T1.ColC,
T1.ColD,
T2.ColE
FROM T1
JOIN T2
ON T1.ColA = T2.ColA
AND T1.ColB = T2.ColB
AND T1.ColC = T2.ColC
AND T1.RN = T2.RN

关于sql-server - T-SQL : How to join tables without creating extra rows - need a one row to one row correspondance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7347273/

28 4 0