Sql server 如果一列为空,则选择其他列

Sql server 如果一列为空,则选择其他列,sql-server,Sql Server,如果B.[Name]有值,则选择以下选项 Select B.[Name], A.[Address], A.TIN, A.AuthorizedRep1Name, A.AuthorizedRep1Email, A.AuthorizedRep1Contact, A.AuthorizedRep2Name, A.AuthorizedRep2Email, A.AuthorizedRep2Contact, A.Re

如果B.[Name]有值,则选择以下选项

Select 
    B.[Name],
    A.[Address], 
    A.TIN, 
    A.AuthorizedRep1Name, 
    A.AuthorizedRep1Email, 
    A.AuthorizedRep1Contact,
    A.AuthorizedRep2Name, 
    A.AuthorizedRep2Email, 
    A.AuthorizedRep2Contact, 
    A.RefundOfSecDep, 
    A.PayeeAddress,
    A.PayeeTIN
    From MembersTbl A
    join UserTbl B
    on A.UserID = B.ID
Select 
    A.[Address], 
    A.TIN, 
    A.AuthorizedRep1Name, 
    A.AuthorizedRep1Email, 
    A.AuthorizedRep1Contact, 
    A.RefundOfSecDep, 
    A.PayeeAddress,
    A.PayeeTIN
    From MembersTbl A
如果B.[Name]为空,它将选择以下内容

Select 
    B.[Name],
    A.[Address], 
    A.TIN, 
    A.AuthorizedRep1Name, 
    A.AuthorizedRep1Email, 
    A.AuthorizedRep1Contact,
    A.AuthorizedRep2Name, 
    A.AuthorizedRep2Email, 
    A.AuthorizedRep2Contact, 
    A.RefundOfSecDep, 
    A.PayeeAddress,
    A.PayeeTIN
    From MembersTbl A
    join UserTbl B
    on A.UserID = B.ID
Select 
    A.[Address], 
    A.TIN, 
    A.AuthorizedRep1Name, 
    A.AuthorizedRep1Email, 
    A.AuthorizedRep1Contact, 
    A.RefundOfSecDep, 
    A.PayeeAddress,
    A.PayeeTIN
    From MembersTbl A

我该怎么办?

您可以通过创建一个变量并分配它们的值进行检查,如下所示

declare @name varchar(20)
set @name = (select name from YourTable b where ...)
Now to check
if(@name is not null)
begin
     ----Your first query.
end
else
begin
     ----Your second query
end

您不需要做额外的工作,只需在第二个查询中添加左连接,因为两个查询返回相同的数据,除了额外的列

您可以根据自己的要求,根据自己的条件(如B)使用结果。名称是否为空

例如:

Select 
B.[Name],
A.[Address], 
A.TIN, 
A.AuthorizedRep1Name, 
A.AuthorizedRep1Email, 
A.AuthorizedRep1Contact,
A.AuthorizedRep2Name, 
A.AuthorizedRep2Email, 
A.AuthorizedRep2Contact, 
A.RefundOfSecDep, 
A.PayeeAddress,
A.PayeeTIN
From MembersTbl A
left join UserTbl B
on A.UserID = B.ID

我希望它能帮助您:)

B.[Name]的值是多少?有些行是
NULL,有些行不是。两个查询返回完全不同的结果集。请显示带有预期结果的样本数据