mysql - 从以日期为参考的表格中选择
问题描述
所以我在使用 SELECT 语句时遇到了问题。
CREATE TABLE Employee
(
EmployeeID NVARCHAR(4000),
Name NVARCHAR(200)
);
CREATE TABLE Promotion
(
PromotionID NVARCHAR(4000),
EmployeeID NVARCHAR(4000),
Date Date
);
INSERT INTO Employee (EmployeeID, Name) VALUES ('12345', 'Sam');
INSERT INTO Employee (EmployeeID, Name) VALUES ('13335', 'Tom');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('1', '12345', '2019-05-20');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('2', '12345', '2020-08-27');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('2', '13335', '2020-06-27');
这是我要从中选择的两个表。
所以我需要的是一个选择,如果有意义的话,我会在最晚的日期为每个唯一的 EmployeeID 获取 PromotionID:D。
它应该看起来像:
PromotionID EmployeeID Date Name
2 12345 2020-08-27 Sam
2 13335 2020-06-27 Tom
所以到目前为止我得到的是
SELECT p.EmployeeID, max(p.Date)
FROM Promotion p
JOIN Employee e on p.EmployeeID = e.EmployeeID
Group BY p.EmployeeID
什么给了我
EmployeeID Date
12345 2020-08-27
13335 2020-06-27
但我无法弄清楚。我只是没有得到与最新日期相关的 PromotionID。
我会很感激一些帮助。
谢谢
汤姆
这里开始编辑。
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('PA', '12345', '2019-05-20');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('MA', '12345', '2020-08-27');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('CO', '13335', '2020-06-27');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('AI', '15555', '2020-01-18');
INSERT INTO Promotion (PromotionID, EmployeeID, Date) VALUES ('CO', '12345', '2021-05-20');
这是表的新条目。
这就是我使用@Tim Biegeleisen 代码时得到的结果。
从系统本身来看,一个人在当天的促销活动不能超过一次。如果这有帮助。
解决方案
看起来你已经拥有了大部分。假设促销 id 按日期顺序排列,您可以只取一个促销 id 的最大值来执行此操作:
SELECT p.EmployeeID,e.name, max(p.Date) as date, max(p.PromotionID) as PromotionID
FROM Promotion p
JOIN Employee e on p.EmployeeID = e.EmployeeID
Group BY p.EmployeeID,e.name
希望这可以帮助。
推荐阅读
- angularjs - 有没有办法在不将代码库迁移到 ES6 或 ES5 的情况下将 angular 6 库用于 angularJS 应用程序
- swift - XCode 模拟器和实际设备显示不同的 UI
- css - 删除边框图像和线性背景之间的空间
- actions-on-google - 单击浏览轮播时,它将打开浏览器。如何返回我的操作?
- mysql - 为什么我在加入 has_one 关联时看不到数据库表?
- excel - VBA - 工作表事件
- c++ - 我需要 Q_EMIT 示例
- sql - 动态 SQL - 参数化查询
- php - 致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数号:无参数
- css - 在 React 应用程序中实现主题