Sql 使用带有联接的Select SUM语句
有人编写了下面的存储过程查询(我已经删除了所有不相关的代码,以便于阅读) 这一切都没问题,但是现在我需要在Case语句中选择/比较“db..History”表中的列。问题是此表上没有现有联接Sql 使用带有联接的Select SUM语句,sql,Sql,有人编写了下面的存储过程查询(我已经删除了所有不相关的代码,以便于阅读) 这一切都没问题,但是现在我需要在Case语句中选择/比较“db..History”表中的列。问题是此表上没有现有联接 我曾尝试在“db..History”表中加入一个内部联接,但这会返回比它应该返回的更多的行。最有可能的原因是,该表有多个“历史记录” 我考虑在开始时使用一个临时表来存储“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