2014-03-06 66 views
1

在ms-access中,我希望在所选字段为空时从另一个字段中选择值。 因此,当所有者为空时,我想要选择经理名称。当所选字段为空时,从另一个字段中选择值

SELECT 

    [Master Bench Assignments].Active, 
    [Client/Projects].Client, 
    Employees.[Last Name], 
    Employees.[First Name], 
    [Client/Projects].Project, 
    [Bench Assignments].Name, 
    [Bench Assignments].[Long Description], 
    [Master Bench Assignments].Notes, 
    [Bench Assignments].Owner, 
    [Staff Managers].[Last Name] 
FROM [Client/Projects] 

    RIGHT JOIN ([Staff Managers] 
     RIGHT JOIN (Employees RIGHT JOIN ([Bench Assignments] 
      LEFT JOIN [Master Bench Assignments] ON [Bench Assignments].[Bench ID] = [Master Bench Assignments].[Bench Task ID]) ON Employees.[Employee ID] = [Master Bench Assignments].[Employee ID]) 
     ON [Staff Managers].[Staff Manager ID] = Employees.[Staff Manager ID]) 
    ON [Client/Projects].[Project ID] = [Master Bench Assignments].[Client/Project] 
WHERE ((([Master Bench Assignments].Active)=Yes) 
    AND (([Master Bench Assignments].Status)="Bench")) 

ORDER BY [Bench Assignments].Name; 

回答

2

这是一个简单的例子,它演示了我认为你想要做的事情。

SELECT 
    p.owner, 
    p.manager, 
    Nz(p.owner, p.manager) AS the_decider 
FROM Projects AS p; 

这是从该查询输出与2行示例表:

owner manager the_decider 
----- ------- ----------- 
a  b  a 
     c  c 

如果您要运行从Access会话之外的查询,你可以使用IIf而不是Nz

IIf(p.owner Is Null, p.manager, p.owner) AS the_decider 
+0

关于在外部访问的好消息。这可能是一个真正的难题。 – Brad

1

查看Nz函数。它就像IsNull或​​3210

SELECT 

    [Master Bench Assignments].Active, 
    [Client/Projects].Client, 
    Employees.[Last Name], 
    Employees.[First Name], 
    [Client/Projects].Project, 
    [Bench Assignments].Name, 
    [Bench Assignments].[Long Description], 
    [Master Bench Assignments].Notes, 
    Nz([Bench Assignments].Owner, [Staff Managers].[Last Name]) as [columnName] 
    [Staff Managers].[Last Name] 
FROM [Client/Projects] 

    RIGHT JOIN ([Staff Managers] 
     RIGHT JOIN (Employees RIGHT JOIN ([Bench Assignments] 
      LEFT JOIN [Master Bench Assignments] ON [Bench Assignments].[Bench ID] = [Master Bench Assignments].[Bench Task ID]) ON Employees.[Employee ID] = [Master Bench Assignments].[Employee ID]) 
     ON [Staff Managers].[Staff Manager ID] = Employees.[Staff Manager ID]) 
    ON [Client/Projects].[Project ID] = [Master Bench Assignments].[Client/Project] 
WHERE ((([Master Bench Assignments].Active)=Yes) 
    AND (([Master Bench Assignments].Status)="Bench")) 

ORDER BY [Bench Assignments].Name; 
相关问题