计算具有记录的未重复的客户端的数量

时间:2018-02-01 18:46:31

标签: sql sql-server

我有一张包含大量信息的表格。我希望找到一个不重复的客户数量,有1或2次付款。这是基本结构:

ClientID   PmtLn PaymentNum    vNum         
1          1     15            1234
1          2     -15           1234
2          1     25            3456
2          1     30            8583
3          1     50            9992
3          1     74            1230
4          1     15            3345

此表中的每个客户都收到了某种付款方式。 ClientID = 1 - 例如收到15的付款,但随后在PmtLn = 2中,该付款被否定,因此它是0,它不算数。 另外两个客户只有正面付款,所以我希望能够找到只有1或2笔付款(但不重复)的非重复客户的数量

所以我的最终结果如下:

 2 payments
 ClientID 
 2
 3

 1 payment
 ClientID
 4

客户2& 3有2笔付款,已经完成。客户4只有1付款,因此只应在1付款结果中显示。客户1 - 有2笔付款 - 但其中一笔是正数,一条是负数,因此它是0,不应该被发现。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果我理解正确:

select clientid
from t
group by clientid
having sum(case when payment > 0 then 1 else 0 end) = 2 and
       count(*) = 2;