只需搜索一次名称,即使它出现在 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
我有一个 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