DB2 V.9 中的 % 模运算符
% Modulus Operator in DB2 V.9
我刚开始从 DB2 进行查询,但遇到这样一种情况,我需要 select 可被 5 整除且无余数的供应商付款、超过 1k 的付款以及相同金额的三笔或更多笔付款.
SELECT T.VendorID, T.Amount, T.Date, ROW_NUMBER ()
OVER (PARTITION BY T.VendorID, T.Amount ORDER BY T.Date) as "Order"
FROM TABLE T
WHERE T.Amount % 5 = 0 AND T.Amount >= 1000;
所以我会把它写到一个子查询中,然后在主查询上放一个参数(Where Order >= 3),但是,% Modulus Operator 似乎抛出了错误。这对我来说有点冒险,因为我无法访问生产数据库并无法通过 Cognos 11 SQL 直通查询 table。关于如何实现相同结果的任何帮助?
谢谢,
斯廷森
您不会使用 % 运算符,SQL 不是完整的编程语言。您将要使用 MOD();函数是这样的:
MOD( dividend, divider )
即:
SELECT T.VendorID, T.Amount, T.Date, ROW_NUMBER () OVER (PARTITION BY T.VendorID, T.Amount ORDER BY T.Date) as "Order"
FROM TABLE T
WHERE T.Amount >= 1000 AND MOD(T.Amount,5) = 0;
希望这可以帮助您走上正确的道路!
我刚开始从 DB2 进行查询,但遇到这样一种情况,我需要 select 可被 5 整除且无余数的供应商付款、超过 1k 的付款以及相同金额的三笔或更多笔付款.
SELECT T.VendorID, T.Amount, T.Date, ROW_NUMBER ()
OVER (PARTITION BY T.VendorID, T.Amount ORDER BY T.Date) as "Order"
FROM TABLE T
WHERE T.Amount % 5 = 0 AND T.Amount >= 1000;
所以我会把它写到一个子查询中,然后在主查询上放一个参数(Where Order >= 3),但是,% Modulus Operator 似乎抛出了错误。这对我来说有点冒险,因为我无法访问生产数据库并无法通过 Cognos 11 SQL 直通查询 table。关于如何实现相同结果的任何帮助?
谢谢, 斯廷森
您不会使用 % 运算符,SQL 不是完整的编程语言。您将要使用 MOD();函数是这样的:
MOD( dividend, divider )
即:
SELECT T.VendorID, T.Amount, T.Date, ROW_NUMBER () OVER (PARTITION BY T.VendorID, T.Amount ORDER BY T.Date) as "Order"
FROM TABLE T
WHERE T.Amount >= 1000 AND MOD(T.Amount,5) = 0;
希望这可以帮助您走上正确的道路!