我有一个表table_1
,其中包含两列:NUMBER_FIELD_1
和FIELD_2
。
我有以下查询:
SELECT FIELD_2 AS FIELD_2,
max(NUMBER_FIELD_1) AS NUMBER
FROM TABLE_1
group by FIELD_2
如何更改上述查询以检查NUMBER_FIELD_1
的最大值是否达到999
,如果确实如此,则将其重置为1
。
答案 0 :(得分:0)
我通常使用模块化计算。即除以数字时的余数。
看看这个,看看它是否能让你了解如何实现。
SELECT 998 % 1000, 999 % 1000, 1000 % 1000, 1001 % 1000
答案 1 :(得分:0)
马修的解决方案看起来像是明智的解决方案。这是另一种选择,也许这更直观:
SELECT T.NUMBER_FIELD_1
, ROW_NUMBER()OVER(PARTITION BY grp.frmID ORDER BY T.NUMBER_FIELD_1) RN
, T.FIELD_2
FROM TABLE_1 T
INNER JOIN (
VALUES(1, 999)
, (1000, 1999)
, (2000, 2999)
) grp(frmID, toID)
ON T.NUMBER_FIELD_1 >= grp.frmID
AND T.NUMBER_FIELD_1 <= grp.toID