首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不包括在SQL中同月内的结果。

问不包括在SQL中同月内的结果。
EN

Stack Overflow用户
提问于 2019-07-07 01:06:33
回答 1查看 277关注 0票数 0

我有两个表--一个是包含某种类型条目的日志的history表,另一个(我们称之为flags),包含关于标志的列(用于某个帐户)。两个表都包含帐户ID。

我想要写一个查询,如果帐户ID在history表中没有那个月的条目,那么只能从history表中提取行(例如,在flag表中,在2019年4月2日输入了一个条目,而在history表中,该帐户在2019年4月1日已经记录了一个条目。其结果是,4月2日的条目不应该被取消)。

我现在有一个基本如下的查询:

代码语言:javascript
复制
SELECT *multiple column names* 
FROM flags 
WHERE NOT EXISTS (SELECT acc_id FROM history WHERE ...)

这就是我被困的地方。对于子查询,我基本上希望获得两个表的日期匹配的匹配(相同的月份和年份),对于WHERE NOT EXISTS,将子查询中找到的flag中的结果排除在外(实际上,我只想要条目的日期不是来自同一个月的结果)。

最重要的栏目是:

  • 帐户ID (将每个日志条目正确地关联到正确的帐户)
  • 日期(只获取未记录在历史表中的月份的行)

我最初使用的是MONTH(),但它只提取日期的月份。我需要它来匹配月份和年份,因为历史表包含几年的数据。

任何帮助都将不胜感激!提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2019-07-07 01:33:17

代码语言:javascript
复制
SELECT *multiple column names* 
FROM flags 
WHERE NOT EXISTS (
  SELECT 1 
  FROM history 
  WHERE history.acc_id=flags.acc_id
   AND date_trunc('month', history.date) =
             date_trunc('month', flags.date)
)

date_trunc函数将用于postgres,这是最初的标记之一。如果您不使用postgres,数据库中可能会有类似的函数,您可以将日期格式化为年月,并比较产生的字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56918710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档