1

有人编写了以下存储过程查询(我删除了所有不相关的代码以使事情更容易阅读)

 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”表值,但这需要执行大量内部连接来获取数据并且会影响性​​能。
4

1 回答 1

1

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

大多数连接问题是因为不正确地创建表。如果您创建的表格分布真实而清晰,它将对您有很大帮助。

于 2012-09-18T07:42:01.513 回答