在SQL中的某个日期之前排除任何内容

时间:2017-10-03 14:33:45

标签: sql

我正在尝试在Confirm Ondemand中构建一个小部件,该小部件显示在特定日期之后已经检查过并且未以堆叠列格式检查的所有资产。因此,例如,我将有一个位置分为两个的列,将检查一种颜色,并且不检查另一种颜色。这是我的SQL语句:

SELECT
   feature.site_code,
   feature.plot_number,
   cs.site_name,
   ward.ward_name,
   CASE WHEN feature.survey_date >= to_date('02/10/2017','DD/MM/YYYY') THEN 'Sprayed'
   ELSE 'Not Sprayed' END as spray_staus,
   feature.survey_date

FROM
   feature,
   ward,
   central_site cs


WHERE
   feature.plot_number BETWEEN 400000 AND 400001 AND
   feature.site_code = cs.site_code AND
   ward.ward_code = feature.ward_code AND
    feature.feature_deadflag ='N' 

问题是,当我只想要最新的资产时,我会从每个资产中获得每次检查。

我需要做什么???

1 个答案:

答案 0 :(得分:0)

是的,你的问题缺乏很多信息。

您应该使用ROW_NUMBER(),但很难说明在哪里或如何。它应该是这样的(将其更改为您想要最新记录的表):

FROM
   (SELECT s.*, ROW_NUMBER() OVER(PARTITION BY s.YourGroup ORDER BY s.YourDate
    FROM feature s) feature,
   ward,
   central_site cs
....
  AND feature.rnk = 1

我使用feature表作为日期,但同样,这只是猜测。

此外,这对大多数RDBMS都有效,但不是全部,所以它真的取决于它。