我有一个数据库,可以在其中重新检查帐户并更改其状态。他们只有一个账单日期,但他们的账户可以有多种状态。我正在使用postgreSQL 9.2
例如我们有这些账户
Account number | Last Name | First Name | bill_date | code
100001 Doe John 06-01-2013 useful
100001 Doe John 06-01-2013 useful
100001 Doe John 06-01-2013 not found
100001 Doe John 06-01-2013 useful
Account number | Last Name | First Name | bill_date | code
100034 Jane Mary 07-12-2013 notfound
100034 Jane Mary 07-12-2013 not found
100034 Jane Mary 07-12-2013 error
100034 Jane Mary 07-12-2013 error
Account number | Last Name | First Name | bill_date | code
100021 Smith Mark 01-11-2013 error
100021 Smith Mark 01-11-2013 error
100021 Smith Mark 01-11-2013 error
100021 Smith Mark 01-11-2013 error
Account number | Last Name | First Name | bill_date | code
10009 Queen Mark 01-11-2013 error
10009 Queen Mark 01-11-2013 useful
10009 Queen Mark 01-11-2013 error
10009 Queen Mark 01-11-2013 error
我试图让我的查询给我这些代码的结果
我想要计算至少获得一个有用代码的所有记录
我想要计算所有没有用但至少有一个未找到代码的记录。
并计算所有记录的唯一错误代码。
所以我的结果看起来像这样
Useful 2 --> John doe, and mark queen
Not Found 1 --> mary jane
Error 1 --> mark smith
我遇到的问题是选择没有用但至少没有找到的记录。我正在过滤我的查询,但是当我搜索未找到的代码时,它仍然会返回有用的代码,因为它使用相同的帐户(John doe)。
这是我下面的查询
select
case
when code in ('useful') then code
else null
end as code,
account_number,
bill_date
from(
select distinct
code,
account_number,
bill_date
joins for tables go here
and code in ('useful', 'not found', 'error')
and bill_date > current_date - interval '2 month'
and bill_date < current_date
order by account_number,code, bill_date
)A
这将返回所有未找到的代码,然后有用的代码将为空。所以 john doe 的帐户仍然会在测试查询中显示为
code | account num | bill date
100001 06-01-2013
100001 06-01-2013
not found 100001 06-01-2013
100001 06-01-2013
我怎么能不将这些帐户包括在未找到的总数中?如果有一个未找到 1 的帐户,其余错误则很好,而且很简单。我想在检查所有错误时也会出现同样的问题。
感谢您在高级的帮助!