Sql 需要自助加入帮助吗

Sql 需要自助加入帮助吗,sql,sql-server,self-join,Sql,Sql Server,Self Join,我有一张桌子XYZ: ID A B C 1 abc ygh NULL 2 fgfd bjh NULL 3 jhkj fgd cgbvc 1 NULL NULL yr 2 NULL NULL jg 我需要在上面的表上进行自连接,以仅获取匹配的ID。我正在尝试使用以下查询: Select T1.ID, T1.A, T1.B, T2.C From XYZ T1 INNER J

我有一张桌子XYZ

ID   A       B       C
1    abc     ygh     NULL
2    fgfd    bjh     NULL
3    jhkj    fgd     cgbvc
1    NULL    NULL    yr
2    NULL    NULL    jg
我需要在上面的表上进行自连接,以仅获取匹配的ID。我正在尝试使用以下查询:

Select T1.ID, T1.A, T1.B, T2.C
From XYZ T1
INNER JOIN XYZ T2
where T1.ID = T2.ID
但没有得到以下结果:

1   abc     ygh     yr
2   fgfd    bjh     jg

请告知。奎师那我猜你想要这样的东西:

select T1.ID, T1.A, T1.B, T2.C from XYZ T1
inner join XYZ T2
on T1.ID = T2.ID
where T1.A is not null and T1.B is not null and T2.C is not null

由于对自身的联接将提供
T1
T2
的所有组合,因此您需要一个所有列均不为
null的联接
为什么要使用
自联接

提示:“A'+NULL=NULL

select ID,max(A) A,max(B) B,max(C) C
from XYZ
where A+B+C is null
group by ID

您可以使用下面的查询,但它基于WHERE子句

select ID,max(A) A,max(B) B,max(C) C
from XYZ
where A+B+C is null
group by ID
select ID,A,B,C from (
select *, ROW_NUMBER() over (partition by id order by s desc ) as 'x' from (
Select  T1.ID,T1.A,T1.B,T2.C,ROW_NUMBER() over (partition by t1.id order by     
t1.a,t1.b ,t1.c ) as s
From xyz T1 JOIN xyz T2 on T1.ID = T2.ID ) abc ) xyz
where x = 1

给定此表结构,您还可以使用
COALESCE

SELECT 
    COALESCE(a.A, b.A) A,
    COALESCE(a.B, b.B) B,
    COALESCE(a.C, b.C) C
FROM 
    XYZ a 
JOIN 
    XYZ b ON a.Id = b.Id
WHERE
    a.A IS NULL OR a.B IS NULL OR a.C IS NULL

A,B总是空的还是C总是空的?