我想用计数来评估一列。我正在通过表格查找下一个计数。如果一行不存在,我想用1而不是0开始计数。有人可以帮助我查询以下内容。如果确实存在一行,那么我想简单地取第3列并将1添加到下一个序列号。
SELECT
COl1,
Col2,
CAST((MAX(col3) + 1) AS SMALLINT) AS col3
FROM table1
GROUP BY col1, col2
答案 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