如何在SQL Server中基于双字段实现无主键表的关联查询
嗨,我来帮你搞定这个SQL Server的查询需求!
你在Excel里用IF(AND())实现的逻辑,对应到SQL Server里其实用**表关联(JOIN)**就能轻松实现,比函数写法更直观高效。
核心实现方案
如果只需要取出Table1中那些在Table2里有完全匹配日期的记录,用INNER JOIN就可以,这和你Excel里只保留满足双日期相等的逻辑完全一致:
SELECT t1.Name, t2.[Number of Work Days] AS WORK_DAYS FROM Table1 t1 INNER JOIN Table2 t2 ON t1.[Effective Date] = t2.[Effective Date] AND t1.[End Date] = t2.[End Date];
扩展场景:保留Table1所有记录
如果你想保留Table1里的所有Name,哪怕某个Name对应的日期在Table2里没有匹配项(这时候WORK_DAYS可以显示0或者NULL),就用LEFT JOIN配合ISNULL函数:
SELECT t1.Name, ISNULL(t2.[Number of Work Days], 0) AS WORK_DAYS -- 没有匹配时显示0,也可以直接写t2.[Number of Work Days]留空 FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.[Effective Date] = t2.[Effective Date] AND t1.[End Date] = t2.[End Date];
小提示
因为你的字段名里包含空格(比如Effective Date),所以在SQL里必须用方括号[]把这些字段名包裹起来,避免语法错误哦。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

