【发布时间】:2025-11-28 15:35:02
【问题描述】:
我继承了一些 SQL 代码,其中一部分代码如下:
CASE WHEN
(CAST(CAST(b.xx AS numeric(11, 6))
* CAST(a.ratio AS numeric(11, 6)) AS decimal(10, 0)) % a.mktcoupons =0)
THEN CAST((CAST(b.xx AS numeric(11, 6)) *
CAST(a.ratio AS numeric(11, 6))) / a.mktcoupons AS decimal(10, 0))
ELSE
CAST(( CAST(b.xx AS numeric(11, 6))
* CAST(a.ratio AS numeric(11, 6))) / a.mktcoupons AS decimal(10, 0))
+ (CAST(CAST(b.xx AS numeric(11, 6))
* CAST(a.ratio AS numeric(11, 6)) AS decimal(10, 0)) % a.mktcoupons)
END AS yy
我理解 'case when A then B else C end' 的一般表达。但是,我很难弄清楚“%”是什么意思?我检查了“mktcoupons”,“mktcoupon”中没有零值。任何的想法?谢谢!
【问题讨论】:
-
即
modulo操作。 -
这称为模运算。 Here您可以找到更多详细信息。这是一个基本的编程运算符,在除法后返回余数。
-
... 有时称为“余数”运算符 - 它在执行除法运算后给出余数。
-
为什么这些 cmets 而不是答案?
-
@BrianBall 因为一行答案不应该是答案,而是 cmets。
标签: sql sql-server