我正在尝试选择由组中的变量中的关键字定义的记录。
name是一个包含关键字的字符串。
组由id1和id2的组合定义。
我对按包含关键术语的组提取记录感兴趣。
select id1, id2, name
case
when name LIKE '%LOAD_TIME' then 1
when name LIKE '%LOGIN_SESSION_TIME' then 1
end as b_flag
from df1
group by id1, id2
having (sum(b_flag) > 0 )
df1型:
id1 id2 name
1 1 xxxLOAD_TIME
1 1 xxxLOGIN_LOGIN_SESSION_TIMExxx
1 1 xxxxSome other timexxxx
2 2 xxSome other timex
3 1 xxxLOAD_TIME
3 1 xxSome other timexx
在创建bÈflag之后,新的数据集应该如下所示:
id1 id2 name b_flag
1 1 xxxLOAD_TIME 1
1 1 xxxLOGIN_LOGIN_SESSION_TIMExxx 1
1 1 xxxxSome other timexxxx
2 2 xxSome other timex
3 1 xxxLOAD_TIME 1
3 1 xxSome other timexx
期望输出:
id1 id2 name b_flag
1 1 xxxLOAD_TIME 1
1 1 xxxLOGIN_LOGIN_SESSION_TIMExxx 1
1 1 xxxxSome other timexxxx
3 1 xxxLOAD_TIME 1
3 1 xxSome other timexx
我看不出我的代码有什么问题,但我也遇到了同样的错误:
[错误10025]:表达式不在按键名分组中
谢谢你的帮助
2条答案
按热度按时间wvt8vs2t1#
您可以使用窗口函数执行此操作:
内部查询检查当前行是否与条件匹配,并对具有相同条件的记录计算标志的窗口和
(id1, id2)
.如果不想重复计算标志的表达式,可以使用其他子查询:
wmvff8tz2#
尝试