我有一个表MyTable
,每天由来自两个外部代理商(AGC1
和AGC2
)的BizTalk填充。我最近遇到了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
答案 0 :(得分:1)
有另一张表格包含:
NameTable
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
答案 1 :(得分:0)
带有包含所有代理商的表的RIGHT JOIN
应该可以解决问题。此版本使用带VALUES
的派生表:
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