具体情况如下:
Monthly_Budget | Extra_Bonus
---------------------------
300,000,000 | 0.40
420,000,000 | 0.60
580,000,000 | 0.90
1,000,000,000 | 1.20
1,600,000,000 | 1.45
2,900,000,000 | 1.55
4,160,000,000 | 1.65
6,600,000,000 | 1.80
10,000,000,000 | 2.10
14,160,000,000 | 2.25
20,000,000,000 | 2.60
26,000,000,000 | 3.00
33,000,000,000 | 3.40
50,000,000,000 | 4.00
73,000,000,000 | 4.50
第一列显示预算,第二列显示相关奖金。 例如,如果预算 300,000,000 或 350,000,000 或 410,000,000 (任何低于下一记录),奖金将 0.40 (之前的记录)。 我的问题是如何查询这个确切的给定示例?
SELECT Extra Bonus
FROM Monthly_Budget_TBL
WHERE Monthly_Budget .....?
由于
答案 0 :(得分:0)
declare @actualBudget integer = 350000000
-- --------------------------------
Select Extra_Bonus from table
Where Monthly_Budget =
(Select Max(Monthly_Budget) from table
Where Monthly_Budget <= @actualBudget)
答案 1 :(得分:0)
所以你有一些预算作为输入,并希望获得预算低于或等于你的投入的最接近的奖金?
在这种情况下,这应该有效:
SELECT Extra_Bonus, {exampleBudgetVariable} - Monthly_Budget as diff FROM Monthly_Budget_TBL
WHERE {exampleBudgetVariable} - Monthly_Budget >= 0
ORDER BY diff ASC
LIMIT 1
{exampleBudgetVariable}应该以您编码的语言替换为您的示例预算
答案 2 :(得分:-1)
为了正确地证明这一点,我将补充几张额外的表格。让我们假装您有一个Employees
表格,其中包含EmployeeID
列和Name
列,MonthlySalesSummary
表格带有EmployeeID
列和SalesAmount
列。您希望与每个销售人员的预算相匹配的是此SalesAmount
值。以下是查询的外观:
SELECT e.Name, b.Extra_Bonus
FROM Employee e
INNER JOIN MonthlySalesSummary s ON s.EmployeeID = e.EmployeeID
CROSS APPLY (
SELECT TOP 1 Extra_Bonus FROM Monthly_Budget_TBL WHERE Monthly_Budget > SalesAmount ORDER BY Monthly_Budget
) b