我有一张名为PAYMENT的桌子。在此表中,我有一个用户ID,一个帐号,一个邮政编码和一个日期。我想找到所有已激活且已停用的用户的所有记录,然后再次激活为Count。
这就是表格的样子:
| user_id | account_no | zip | date | register |
| 1 | 123 | 55555 | 12-DEC-09 | active |
| 1 | 123 | 55555 | 13-DEC-09 | disactive |
| 1 | 123 | 55555 | 14-DEC-09 | active |
| 2 | 456 | 55555 | 14-DEC-09 | disactive |
| 3 | 789 | 55555 | 14-DEC-09 | disactive |
| 4 | 999 | 55555 | 14-DEC-09 | active |
结果应该类似于:
我使用COUNT(user_id),因此结果只会作为
= 1
我不知道这可能吗?
答案 0 :(得分:0)
要查找处于活动状态和非活动状态的用户,您可以按用户ID进行分组。 (您自己的方法where register = 'active' and register = 'disactive'
不起作用,因为在单个记录中注册只能是“活动”或“非活动”。您必须改为查看一组记录。)
select user_id
from mytable
group by user_id
having count(case when register = 'active' then 1 end) > 0
and count(case when register = 'disactive' then 1 end) > 0;
然后数:
select count(*)
from
(
select user_id
from mytable
group by user_id
having count(case when register = 'active' then 1 end) > 0
and count(case when register = 'disactive' then 1 end) > 0
) users;