SQL Server:从Roster表提取指定数据插入paycode_value_compute表
问题描述
现有Roster表,结构及数据如下:
| Username | Roster Date |
|---|---|
| Staff1 | 2022-09-12 |
| Staff1 | 2022-09-13 |
| Staff2 | 2022-09-30 |
| Staff3 | 2022-10-01 |
| Staff3 | 2022-10-02 |
| Staff3 | 2022-09-11 |
需要编写SQL语句,提取其中Roster Date >= '2022-09-12'的记录,将Username、对应Roster Date分别作为From Date和To Date插入到paycode_value_compute表中,该表结构如下:
| Username | From Date | To Date |
|---|
最终期望插入后的结果为:
| Username | From Date | To Date |
|---|---|---|
| Staff1 | 2022-09-12 | 2022-09-12 |
| Staff1 | 2022-09-13 | 2022-09-13 |
| Staff2 | 2022-09-30 | 2022-09-30 |
| Staff3 | 2022-10-01 | 2022-10-01 |
| Staff3 | 2022-10-02 | 2022-10-02 |
解决方案
可以使用INSERT INTO...SELECT语句直接完成数据筛选与插入:
INSERT INTO paycode_value_compute (Username, `From Date`, `To Date`) SELECT Username, `Roster Date` AS `From Date`, `Roster Date` AS `To Date` FROM Roster WHERE `Roster Date` >= '2022-09-12';
逻辑说明:
- 通过
WHERE子句过滤出Roster Date不早于2022-09-12的记录,自动排除Staff3的2022-09-11这条数据 - 将每条符合条件记录的
Username直接映射到目标表的对应字段,同时把Roster Date分别赋值给From Date和To Date - 执行后即可得到符合要求的目标表数据
内容的提问来源于stack exchange,提问作者gyiernahfufie
相关产品推荐
相关产品推荐

