只需搜索一次名称,即使它出现在 2 个不同的日期

Need to search the name only once even if it is coming in 2 different date

我有一个 table 像这样的东西

工人

+--------+-------+-------------+
| Worker | Lotid |    date     |
+--------+-------+-------------+
| ABC    |  1234 | 2016-11-06  |
| ABC    |  1234 | 2016-11-06  |
| ABC    |  1234 | 2016-12-06  |
| XYZ    |  1235 | 2016-12-06  |
+--------+-------+-------------+

我是运行这个查询:

SELECT Max (worker)  AS worker, 
       lotid, 
       Min (trsdate) AS date 
FROM   worker 
WHERE  trsdate BETWEEN '2016-11-06' AND '2016-11-06'
GROUP  BY lotid 

我正在获取输出。

+-----+------+------------+
| ABC | 1234 | 2016-11-06 |
+-----+------+------------+

当 运行 相同的查询时:trsdate between '2016-12-06' and '2016-12-06'

我得到的输出是

+-----+------+------------+
| ABC | 1234 | 2016-12-06 |
+-----+------+------------+
| XYZ | 1235 | 2016-12-06 |
+-----+------+------------+

但我想要实现的是,当我们计算 lotid 时,它不应该在不同的日期再次出现,因为它发生在 1234 年,它在 2 个不同的日期输入了 2 次,所以当我搜索 2016-11- 06 比它的正确,但是当我搜索 2016-12-06 时,它再次出现相同的 lotid。

您应该在使用 where 子句限制结果之前进行分组。下面的查询按预期工作:

SELECT worker
     , lotid
     , [date]
FROM (SELECT Max (worker)  AS worker, 
             lotid, 
             Min (trsdate) AS [date] 
      FROM   worker 
      GROUP  BY lotid) temp
WHERE date between '2016-12-06' and '2016-12-06'

结果:

worker  lotid   date
XYZ     1235    2016-12-06 00:00:00.000