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根本不在我的表中。