我有两个表(链和位置)。列 ChainId 存在于两个表中。我想在使用 Join 的输出中显示第一个查询中提到的所有列加上第二个查询中提到的一个附加列(位置)。
选择 ch.ChainId、ch.ChainCode、ch.Name、ch.IsActive、 ch.CreatedBy, ch.CreatedOn, ch.LastUpdatedBy, (选择计数(*) 从位置 其中 ChainId = ch.ChainId) 作为位置 从 链条 在哪里 ch.IsActive = 1
考虑到需要聚合一个表而不是另一个表,最安全的选择是将子查询移动到您的
FROM
子句中并使用 LEFT OUTER JOIN:
select
ch.ChainId, ch.ChainCode, ch.Name, ch.IsActive,
ch.CreatedBy, ch.CreatedOn, ch.LastUpdatedBy,
lo.Locations
from
Chain ch
LEFT OUTER JOIN (SELECT count(*) as Locations, ChainID FROM Location GROUP BY ChainID) as lo
ON lo.ChainID = lo.ChainID
where
ch.IsActive = 1