数从1开始

时间:2018-04-27 13:35:33

标签: sql db2

我想用计数来评估一列。我正在通过表格查找下一个计数。如果一行不存在,我想用1而不是0开始计数。有人可以帮助我查询以下内容。如果确实存在一行,那么我想简单地取第3列并将1添加到下一个序列号。

SELECT
COl1, 
Col2,
CAST((MAX(col3) + 1) AS SMALLINT) AS col3
FROM table1
GROUP BY col1, col2

2 个答案:

答案 0 :(得分:2)

您正在使用返回最高值的MAX()函数。如果要计算出现次数(行数),则需要使用COUNT()函数。

修改

需要更多细节,但在SQL Server中你可以尝试这样的事情:

SELECT col1, col2, count(1) + 1 as col3
FROM table1
GROUP BY col1, col2

它将计算不同的 col1 col2 对的数量,然后向其中添加一个并将其显示为 col3 。根据我的理解,您实际上不需要使用 col3 的当前值,因为您正在重新计算它。

答案 1 :(得分:0)

如果你想要所有的组合,如果一个组合不存在,试试这个:

with combinaison as (
select distinct f1.col1, f2.col2 
from table1 f1 cross join table1 f2
)
SELECT f1.col1, f1.col2, ifnull(MAX(f1.col3), 0) + 1 AS col3
FROM table1 f1
GROUP BY f1.col1, f1.col2
union all
select f2.col1, f2.col2, 1 AS col3
from combinaison f2 left outer join table1 f3 on (f2.col1, f2.col2)=(f3.col1, f3.col2)
where f3.col1 is null