带有Join / Where子句的M​​SSQL 2008单语句满足多个场景

时间:2014-09-18 05:04:48

标签: sql sql-server sql-server-2008 tsql

我有一些需要过滤掉某些记录的查询。有几种不同的场景,我似乎无法获得满足所有这些场景的单一查询。

SQLFiddle

我正在尝试使用当前承诺过滤掉客户,由于表设计,承诺表中的记录具有空状态且CommitDate大于当前日期。

问题在于,在某些情况下,承诺的状态可以为空但不是最新的。此外,可以存在与同一客户/协议相关联的多个承诺记录(其中多个承诺记录可以具有空状态但是“已损坏”,这是一个超过承诺的主动承诺)。

我还必须能够包括所有没有任何承诺的客户/协议。

在这一点上,我已经到了包括一些东西的地方,但却错过了其他的东西。然后,当我包含丢失的那些时,包含的那些现在丢失了。

我有查询,我已经研究过并且不知道我在SQLFiddle中包含了多少不同的东西。

不能改变表模式。这些是我开始使用之前已经存在的表(超过15年)。

非常感谢任何帮助。

**编辑**

SQLFiddle With Testing Data

这涵盖了我现在能记住的所有情景。

**编辑2 **

New SQLFiddle

0 个答案:

没有答案