我认为标题有点偏离我的需要,所以如果有人想到更好的标题,请不要犹豫,改变它。
我的问题是:我有一个TIMESHEET表和一个RATES表。
TIMESHEET表如下所示:
|RATE-ID|OT |DAY1|DAY2|DAY3|DAY4|DAY5|DAY6|DAY7|DAY8|DAY9|DAY10|DAY11|DAY12|DAY13|DAY14|
----------------------------------------------------------------------------------------
| 1 |1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 7 | 8 | 1 | 2 | 0 | 5 | 6 |
| 5 |1.5| 6 | 5 | 4 | 3 | 2 | 0 | 0 | 1 | 0 | 7 | 6 | 4 | 3 | 2 |
RATES表如下所示:
|ID| RATE |
|1 | 50.00 |
|2 | 30.00 |
....
|5 | 100.00|
那么我在查询方面的做法(一旦关闭,所以不用担心SQL注入)是这样的:
SELECT sum(DAY1)+sum(DAY2)+sum(DAY3)+sum(DAY4)+sum(DAY5)+sum(DAY6)+sum(DAY7)+sum(DAY8)+sum(DAY9)+sum(DAY10)+sum(DAY11)+sum(DAY12)+sum(DAY13)+sum(DAY14) as TOTALHOURS, OT, RATES.RATE from TIMESHEET INNER JOIN RATES on TIMESHEETS.RATE-ID = RATES.ID
作品太棒了 - 3个单独的栏目告诉我总小时数,加时赛乘数和费率。现在是我正在努力的部分。我似乎无法将TOTALHOURS列与任何东西相乘。我可以做简单的OT * RATE as NEWRATE
并将其归结为2列:TOTALHOURS和NEWRATE。
我的问题是,如何将这两个动态命名列相乘以获得结果?
,即第一个是49(第1行的总和)* 1(第1行的加法)* 50(第1行的比率)= 2450
非常感谢任何帮助。
干杯,
迪。
答案 0 :(得分:2)
如果你想要一个单行查询而没有运行子查询,临时表,CTE,group by子句或者你有什么的麻烦,只需尝试清理查询:
SELECT sum((DAY1+DAY2+DAY3+DAY4+DAY5+DAY6+DAY7+DAY8+DAY9+DAY10+DAY11+DAY12+DAY13+DAY14) * RATE * OT) as TOTALL FROM from TIMESHEET INNER JOIN RATES on TIMESHEETS.RATE-ID = RATES.ID
SQL有多种方法可以实现相同的结果。尝试不同的类型,找到适合自己和应用程序的类型。