首页 > 解决方案 > Sql 查询返回最大计数 1 如果值为 0 或 -1 否则取最大计数

问题描述

下面的查询工作正常我遇到的问题是tableA我在该表中有一个默认值为-1,所以它返回0但我想要一个可以检查最大计数是否为的if或case条件 - 1 然后它应该以 1 开头,否则取最大计数

SELECT column1, column2,column3,
    coalesce((SELECT max(columnid)
    FROM tableA),1) 
               + row_number() OVER (ORDER BY user) columnid
               FROM (SELECT columnid,
                            column3,column2,
                            row_number() OVER (PARTITION BY column3
                                               ORDER BY user) rn
                            FROM  tableB) t
               WHERE rn = 1

示例:假设我们在表中的最大计数为 -1,它是一个默认值,如果值不是 -1,它应该从 0 开始计数,它应该获得最大计数

标签: sqlsql-server

解决方案


你可以改变

coalesce((SELECT max(columnid)
    FROM tableA),1)  

至:

CASE WHEN coalesce((SELECT max(columnid)
    FROM tableA),1) =-1 THEN 0 ELSE coalesce((SELECT max(columnid)
    FROM tableA),1)  END

推荐阅读