我的查询不断返回两个具有前缀名称的企业,我想将其限制为一个。
SELECT e.company,
to_char(a.timestamp, 'yyyy/mm')AS "Year, Month",
count(1)AS "Total Actions"
FROM activities a
JOIN users u ON a.trackid=u.trackid
JOIN enterprises e ON u.company=e.company
WHERE TIMESTAMP > (CURRENT_DATE - interval '12 months')
AND user_state = 'active'
AND user_type != 'BAR'
AND enterprise LIKE 'Foo Enterprise'
And enterprise != 'Foo Cyber'
AND LEFT(actionname, 4) NOT IN
(SELECT actionname
FROM Actions
WHERE action_group='NoUserAction')
GROUP BY e.company,
to_char(a.timestamp, 'yyyy/mm')
ORDER BY to_char(a.timestamp, 'yyyy/mm') DESC, e.company
我的结果显示“ Foo Enterprise”和“ Foo Cyber”都不想看到“ Foo Cyber”。
即使使用NOT LIKE'%cyber%',此查询也返回的数据示例如下:
Foo Cyber 2018/09 192
Foo Enterprise 2018/09 191
Foo Cyber 2018/08 406
Foo Enterprise 2018/08 1457
Foo Cyber 2018/07 2144
Foo Enterprise 2018/07 1106
答案 0 :(得分:0)
您可以尝试将查询条件更改为以下示例:
And enterprise not like 'Foo Cyber'
OR
更低的(企业)不像'%cyber%'
您所拥有的查询应该可以正常工作,因此可能存在空格或大写/小写的情况。
问题是您正在显示e.company
,但您尝试使用Enterrise进行过滤。
请将变量更改为e.company
。例如:
`和e.company不喜欢“ Foo Cyber”
答案 1 :(得分:0)
此逻辑:
WHERE . . .
AND enterprise LIKE 'Foo Enterprise'
AND enterprise != 'Foo Cyber'
. . .
只能返回'Foo Enterprise'
(所有布尔表达式都使用AND
连接)。第一个条件是相当严格的-比!=
更为严格。
我认为您的实际查询有些不同。