使用日志事件匹配数据

时间:2016-03-02 09:47:42

标签: sql teradata

我有一张表events,如下所示:

  • check_date,Id

我有一张表contracts,如下所示:

  • sign_date,Id

我想通过查询向contracts表添加一个列(布尔值)。新列(evaluated)是:

  • True如果events中至少有一行合同Id匹配且sign_date - check_date)介于0和3之间当合同签入events时,我们可以有多个事件。我需要查看是否至少有一个发生在合同签署的同一天或最多3天前。

最好的方法是什么?左边的连接然后是我们匹配的另一个SELECT distinct似乎是一种奇怪的方式。

2 个答案:

答案 0 :(得分:2)

所以,像这样:

class MyClsName(DetailView):
    template_name = "setup/code_install.html"

    def get_object(self, queryset=None):
        return MyModel.objects.get(Name=self.request.session['name'])

答案 1 :(得分:1)

您应该比较两个版本MAXDISTINCT的解释(和资源使用情况):

SELECT DISTINCT c.*,
   (CASE WHEN e.id IS NULL THEN 'N' else 'Y' end) AS boolCol
FROM contracts AS c
LEFT OUTER JOIN events AS e
  ON c.id = e.id 
     -- I simplified your date logic
 AND c.sign_date BETWEEN e.check_date - 3 AND e.check_date)

DISTINCT更容易编写,优化程序可能会自动将其替换为GROUP BY处理。