【发布时间】:2021-06-17 05:53:12
【问题描述】:
我想计算每个员工在一段时间内的工资,例如从 01-01-2021 到 05/31/2021。
我有这 3 张桌子:
老师
| Id | DateOfBirth | PhoneNumber | |
|---|---|---|---|
| 1 | 0001-01-01 | a@example.com | 23423424 |
| 2 | 1984-09-30 | b@example.com | 9832131 |
教师工资
| Id | Salary | TeacherId | FromDate | ToDate | IsPartTime |
|---|---|---|---|---|---|
| 1 | 500000 | 1 | 2021-01-01 | 2021-01-31 | 1 |
| 2 | 10000000 | 1 | 2021-02-01 | 2021-03-15 | 0 |
| 3 | 15000000 | 1 | 2021-03-16 | NULL (mean now) | 0 |
时间输入
| Id | TeacherId | TeacherSalaryPartTime | Date |
|---|---|---|---|
| 1 | 1 | 500000 | 2021-01-05 |
| 2 | 1 | 450000 | 2021-01-07 |
我想计算这些员工的总工资
例如在这种情况下,该员工从 2021 年 1 月 1 日到 2021 年 1 月 31 日是兼职,然后从时间输入 (500000+450000)
而 2021 年 2 月 1 日至 2021 年 3 月 15 日是(2 月的天数)(10000000/2 月的天数)+ 3 月的 15 天,工资计算为 10000000/(3 月的天数) (从 03/01/2021 到 03/15/2021)
并且 03/16/2021 到 05/31/2021 计算如下:(从 2021 年 3 月 16 日到月底的天数)(15000000/3 月的天数)+(天数从 2021 年 4 月 1 日到 2021 年 5 月 31 日)(15000000/天数)
你能帮我用 T-SQL 计算一下吗
谢谢
【问题讨论】:
-
欢迎来到 StackOverflow!您自己尝试过什么,为什么它对您不起作用?请edit您的问题包括您的个人尝试。
-
请同时标记您正在使用的
SQL Server的版本 -
请注意,就我们的目的而言,像“98”这样的 id 并不比像“98A98136-816F-4637-680F-08D930A8EE53”这样的 id 更容易理解。
-
[Date]列的格式有点可疑,数据类型是什么?
-
感谢您的帮助,现在是 datetime(2),完整格式为“1989-12-17 00:00:00.0000000”(您的 05/31/2021 是从哪里来的?)我想用 2 个参数 FromDate 和 Todate 创建一个存储过程
标签: sql sql-server tsql