SQL等于COUNTIFs Excel公式吗?

时间:2019-05-31 23:30:11

标签: sql excel-formula netezza aginity

我正在尝试在Netezza Aginity SQL中重新创建一些excel公式,以便可以在数据库级别完成处理,但是却遇到了麻烦。

公式大致为:

If( Countifs( policycolumn, policy, matchcolumn, "Match", codecolumn, code) >0, "true", "false")

因此,如果有任何匹配策略,“匹配”和代码的行,它将大于0且为true。我只是在政策结肠炎方面苦苦挣扎,因为要计算的政策就是该行中的政策。

人们有没有办法使用某些东西来模仿sql中的状态?

编辑:举个例子,我的数据集如下:(对不起,我格式化不好):

policycolumn  |  matchcolumn  |  codecolumn

12345         | match         | c

12345         | no match      | d

9876          | match         | c

9876          | no match      | c

我想另外显示一列

policycolumn  |  matchcolumn  |  codecolumn | yesno

12345         | match         | c           | yes

12345         | no match      | d           | no

9876          | match         | c           | yes

9876          | match         | d           | no

行1将为是,因为它计算出现12345的次数,并带有“匹配”和“ c”。该行与该行匹配,因此其> 0并触发IF规则为“是”

行2不会为是,因为它的策略号为12345,“不匹配”和“ d”。

第3行为是,因为该行策略号9876是“ match”和“ c”。

第4行不是“是”,因为该行策略号9876是“不匹配”。

该行为真,必须满足所有条件(匹配列=匹配,代码列= c),并将新列设置为“是”。

1 个答案:

答案 0 :(得分:0)

此SQL应该可以执行您的要求。

select policycolumn, matchcolumn, codecolumn, 
case when matchcolumn = 'match' and codecolumn = 'c' then 'yes' else 'no' end yesno
from <your table>

测试结果

with test_data_set as(
  select 12345 policycolumn, 'match' matchcolumn, 'c' codecolumn union all
  select 12345, 'no match', 'd' union all
  select 9876, 'match', 'c' union all
  select 9876, 'match', 'd')
select policycolumn, matchcolumn, codecolumn, 
case when matchcolumn = 'match' and codecolumn = 'c' then 'yes' else 'no' end yesno
from test_data_set;

*returns*
policycolumn matchcolumn codecolumn yesno
12345   match   c   yes
12345   no match    d   no
9876    match   c   yes
9876    match   d   no

请告诉我是否有帮助