2016-09-14 20 views
1

SQL很新,所以请耐心等待。
我有两个表格,一个是Locations表格,另一个是FileImport表格。
我每天都会得到文件,然后导入它们,然后根据Locations表中的位置进行分类。
我通常使用Excel来完成跟踪错过的方法,但必须通过SQL更简单。
目前,我有以下查询:在SQL连接中找不到缺少的匹配行

SELECT dbo.Location.LocationDesc, 
     dbo.FileImport.LocationName, 
     dbo.FileImport.CreatedDate, 
     dbo.FileImport.FileName 
FROM dbo.FileImport left OUTER JOIN dbo.Location 
     ON dbo.FileImport.LocationName = dbo.Location.LocationDesc 
where CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14' 

有一些较旧的位置未在位置表中使用,但现在我想在其中找到没有Locations表中的所有位置相应的上传当天,任何帮助将不胜感激。

干杯

+0

你可能想使用NOT EXISTS例如选择dbo.Location.LocationDesc FROM dbo.Location WHERE NOT EXISTS(SELECT * FROM dbo.FileImport WHERE dbo.FileImport。 LocationName = dbo.Location.LocationDesc AND CAST(dbo.FileImport.CreatedDate AS Date)='2016-09-14') – Cato

回答

1

这会给你,不要有上的文件导入所有地点14月-2016

SELECT loc.LocationDesc 
FROM 
dbo.Location loc 
where not exists 
(select null from 
dbo.FileImport fi 
where fi.LocationName = loc.LocationDesc 
and CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14'); 
+0

非常感谢你,这正是我想要的!非常感谢 – dotexecutable

1
SELECT dbo.Location.LocationDesc, dbo.FileImport.LocationName, dbo.FileImport.CreatedDate, dbo.FileImport.FileName 

FROM   dbo.Location 

left OUTER JOIN dbo.FileImport ON dbo.FileImport.LocationName = dbo.Location.LocationDesc 
        and CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14' 

where dbo.FileImport.LocationName is null 
1

尝试这样,

SELECT L.LocationDesc 
    ,FI.LocationName 
    ,FI.CreatedDate 
    ,FI.FileName 
FROM dbo.FileImport FI 
LEFT OUTER JOIN dbo.Location L ON FI.LocationName = L.LocationDesc 
    AND CAST(FI.CreatedDate AS DATE) = '2016-09-14' 
WHERE L.LocationDesc IS NULL 
0

尝试在查询下面。它的结果位置存在于转储中,但不在dbo.Location表中。

SELECT fi.LocationName, fi.LocationName, fi.CreatedDate, fi.FileName 
FROM dbo.FileImport AS fi 
WHERE NOT EXISTS (SELECT * FROM dbo.Location AS l WHERE fi.LocationName = l.LocationDesc 
         AND CAST(fi.CreatedDate AS Date) = '2016-09-14' 
        ) 
0

使用此查询,

SELECT L.LocationDesc 
    ,FI.LocationName 
    ,FI.CreatedDate 
    ,FI.FileName 
FROM dbo.FileImport FI 
RIGHT OUTER JOIN dbo.Location L ON FI.LocationName = L.LocationDesc 
    AND CAST(FI.CreatedDate AS DATE) = '2016-09-14' 
WHERE FI.LocationDesc IS NULL