我正在使用 SSMS 2008,试图只选择一行/客户端。我需要选择以下列:client_name
、end_date
和program
。有些客户只有一个客户行。但其他人有多个。
对于具有多行的客户端,它们通常具有不同的end_date
和program
。例如:
CLIENT PROGRAM END_DATE
a b c
a d e
a f g
h d e
h f NULL
这是实际数据的真正简化版本。正如您将看到的,不同的客户端可以在同一个程序(“d”)中。但是同一个客户不能多次出现在同一个程序中。
还有一个棘手的问题是它end_date
可以是 NULL,所以当我尝试选择那些 > 1 行的客户端时,我添加了一个 HAVING 语句 > 1。但这消除了我所有的 NULLEnd_date
行。
总而言之,我想要每个客户一行。因此,总共只有一行的客户 + 上面列出的具有以下条件的客户:
- 仅选择
End_date
最大或 NULL 的行。(在大多数情况下end_date
,这些客户端的值为 null)。
我怎样才能用尽可能少的逻辑来实现这一点?