使用带有连接的Select SUM语句

时间:2012-09-18 04:51:14

标签: sql

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

 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 

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

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

1 个答案:

答案 0 :(得分:1)

也许你的内心联系不正确,但是,你可以create a view你必要的表格&字段并实现连接。在大多数情况下,使用可视化工具(如上面的链接所示)来创建视图比编写代码更容易和更好。

大多数联接问题都是因为错误地创建了表。如果您创建的表格分布得非常清晰,那么它可以为您提供很多帮助。