Tsql 在查询中找不到值时返回行

Tsql 在查询中找不到值时返回行,tsql,null,records,Tsql,Null,Records,我每天都有一个由来自两个外部机构(AGC1和AGC2)的BizTalk填充的表MyTable。我最近遇到了一个问题,AGC2一直在发送一个空白文件,因此没有更新任何记录 我需要运行下面这样的查询,它将返回 AGC1 01/28/2016 AGC2 NULL 但是由于我没有AGC2的记录,我只得到了 AGC1 01/28/2016 如何获得第一个结果集中的AGC2 NULL SELECT Agency, MAX(CONVERT(nvarchar(30), DATEENTERED,

我每天都有一个由来自两个外部机构(
AGC1
AGC2
)的BizTalk填充的表
MyTable
。我最近遇到了一个问题,
AGC2
一直在发送一个空白文件,因此没有更新任何记录

我需要运行下面这样的查询,它将返回

AGC1   01/28/2016
AGC2   NULL
但是由于我没有AGC2的记录,我只得到了

AGC1   01/28/2016
如何获得第一个结果集中的
AGC2 NULL

SELECT Agency, MAX(CONVERT(nvarchar(30), DATEENTERED, 101)), Case when MAX(CONVERT(nvarchar(30), DATEENTERED, 101)) = CONVERT(nvarchar(30), GETDATE(), 101) THEN 'True' ELSE 'False' end
FROM DBO.MYTABLE 
GROUP BY AGENCY

另一个表包含:

姓名表

Name
-----
AGC1
AGC2
然后使用此查询:

Select n.Name, max(m.dateentered)
from MyTable m right join NameTable n
on m.Agency = n.Name
group by n.Name

一个
右键联接
和一个包含所有代理的表应该可以做到这一点。此版本使用具有
值的派生表

SELECT 
    ag.Agency, 
    MAX(CONVERT(nvarchar(30), mt.DATEENTERED, 101)), 
    Case when MAX(CONVERT(nvarchar(30), mt.DATEENTERED, 101)) = CONVERT(nvarchar(30), GETDATE(), 101) THEN 'True' ELSE 'False' end
FROM 
    DBO.MYTABLE AS mt
    RIGHT JOIN ( VALUES('AGC1'),('AGC2') ) AS ag(Agency) ON
         ag.Agency=mt.Agency
GROUP BY
    ag.AGENCY

不,我仍然只得到AGC1 NULL,因为AGC2根本不在我的表中。