我想将SQL语句公式的结果更改为1,2,3,4或5(这些是工作日)。
目前我正在使用如下所示的表格(我有输入和天后退,输出是我想看到的):
Input, days-back, output:
1 0 1
Input, days-back, output:
1 1 5
Input, days-back, output:
1 2 4
Input, days-back, output:
2 4 3
P.S。我没有约会,只有一天的数字。
我希望你能理解我在寻找的东西:)
答案 0 :(得分:2)
如果您希望“天后”大于5,则需要使用以下公式:
((Input + ((5*days-back)-1) - days-back) % 5) + 1
这是如何工作的 - 如果你看一下之前的公式,你可以看到我在输入中添加了5,以确保在减去一个和几天前我们总是积极的。然后我按5修改并添加一个,这样我们从1到5而不是0到4
由于我不知道天后会有多大,我需要更大的东西,但我也需要让它不影响mod 5的计算,所以我只是将它乘以5.然后减去一个(所以我可以稍后添加它,并将0到4到1到5),我们就完成了。
以下答案
我注意到我错过了5个案例 - 这是适用于此的公式:
((Input + 4 - days-back) % 5) + 1
原始回答
您需要使用modulus math。你想要的公式是
(Input + 5 - days-back) % 5
其中%
表示模数。在SQL Server中,您可以在Oracle中使用%
MOD
等等 - 它取决于平台。
对于那些关心的人是我的DB2测试代码:
WITH TEST_TABLE(input, days_back) AS
(
VALUES
(1,0),
(1,1),
(1,2),
(2,4)
)
SELECT TEST_TABLE.*
MOD(INPUT+4-DAYS_BACK,5)+1
FROM TEST_TABLE