Sql Postgres:如何限制我的查询返回一个企业?
我的查询不断返回两个具有前缀名称的企业,我想将其限制为一个Sql Postgres:如何限制我的查询返回一个企业?,sql,postgresql,Sql,Postgresql,我的查询不断返回两个具有前缀名称的企业,我想将其限制为一个 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 TIMEST
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”
此查询返回的数据示例(即使使用了不相似的“%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能否尝试将查询条件更改为以下示例:
And enterprise not like 'Foo Cyber'
或
和较低的(企业级)不象“%cyber%”
您的查询应该可以正常工作,因此可能会出现空格或大写/小写的情况
更新
问题是您正在显示e.company
,但您正在尝试使用enterrise进行筛选
请将变量更改为e.company
。例如:
`e.company不喜欢“Foo Cyber”这种逻辑:
WHERE . . .
AND enterprise LIKE 'Foo Enterprise'
AND enterprise != 'Foo Cyber'
. . .
只能返回'Foo Enterprise'
(所有布尔表达式都使用和连接)。第一个条件相当严格——比更严格=代码>
我认为您的实际查询有点不同。试试这个“企业”和“Foo Cyber”不一样。你能给我们看一张有结果的表格吗?你能更改或添加<代码>e.公司不喜欢代码>。您正在显示e.company
,但您正在尝试使用enterprise进行筛选。这不匹配。WHERE TIMESTAMP>…
请限定您的引用。(而且:你的问题不可读。而且:时间戳
是一个保留字)我得到了相同的结果:其中。还有像“Foo enterprise”和“enterprise!”Foo Cyber’
Foo Cyber 2018/09 192 Foo Enterprise 2018/09 191 Foo Cyber 2018/08 406 Foo Enterprise 2018/081457@ForrestBear . . . 此逻辑无法返回'Foo-Cyber'
,因为它与'Foo-Enterprise'
不匹配。时期您的连接器都是和s,这不匹配。将这两个企业变量更新为e.company解决了此问题。非常感谢。