Sql 使用带有联接的Select SUM语句

Sql 使用带有联接的Select SUM语句,sql,Sql,有人编写了下面的存储过程查询(我已经删除了所有不相关的代码,以便于阅读) 这一切都没问题,但是现在我需要在Case语句中选择/比较“db..History”表中的列。问题是此表上没有现有联接 我曾尝试在“db..History”表中加入一个内部联接,但这会返回比它应该返回的更多的行。最有可能的原因是,该表有多个“历史记录” 我考虑在开始时使用一个临时表来存储“db..History”表值,但这需要进行大量的内部连接来获取数据,这会影响性能 也许您的内部联接不正确,但是,您可以选择一些必要的表和

有人编写了下面的存储过程查询(我已经删除了所有不相关的代码,以便于阅读)

这一切都没问题,但是现在我需要在Case语句中选择/比较“db..History”表中的列。问题是此表上没有现有联接

  • 我曾尝试在“db..History”表中加入一个内部联接,但这会返回比它应该返回的更多的行。最有可能的原因是,该表有多个“历史记录”
  • 我考虑在开始时使用一个临时表来存储“db..History”表值,但这需要进行大量的内部连接来获取数据,这会影响性能

也许您的内部联接不正确,但是,您可以选择一些必要的表和字段,并在这些表和字段上实现联接。在大多数情况下,使用可视化工具(如上面的链接所示)创建视图比编写代码更容易、更好


大多数联接问题都是由于不正确地创建表造成的。如果您创建的表分布真实且清晰,它将对您有很大帮助

也许您的内部联接不正确,但是,您可以选择一些必要的表和字段,并在这些表和字段上实现联接。在大多数情况下,使用可视化工具(如上面的链接所示)创建视图比编写代码更容易、更好


大多数联接问题都是由于不正确地创建表造成的。如果您创建的表分布真实且清晰,它将对您有很大帮助

事实证明,我在为历史表创建的新左连接上添加了更多的条件事实证明,我在为历史表创建的新左连接上添加了更多的条件
 SELECT           
   CRL.ClientNum ,    
            ..."A lot of columns"...,
   ISNULL((SELECT SUM(Amount) FROM db..History dh (nolock) WHERE dh.id = dd.Id AND ActivityId = 11), 0.00) AS [Some Amt],    
            ..."A lot more columns"...        
   FROM db..[SomeLog] SL  
            ..."A lot of inner joins and left joins"...             
   where clause
   order by clause