如何在不使用内置COUNT
函数的情况下根据条件计算表中的字段?有没有办法做到这一点?
要求如下:
创建名为findtotalcarmodels的PL / SQL函数以返回总计 属于特定型号的汽车数量。该功能应该有一个 IN参数为model_name。然后,您应该使用显式游标来计算 属于该车型的汽车数量并返回最终计数。你不能 使用任何隐式游标,表联接,子查询,集合运算符,组函数或SQL 函数(如COUNT)来创建这个函数。
答案 0 :(得分:2)
SUM(CASE WHEN <condition on your fields> THEN 1 ELSE 0 END)
答案 1 :(得分:1)
这可能是我写的最愚蠢的答案。业内没有人这样工作。
以下是答案:
CREATE OR REPLACE FUNCTION findtotalcarmodels
( model_name IN VARCHAR2)
IS
CURSOR mycur IS
SELECT model_name_col FROM car_table;
mycount INTEGER := 0;
current_model_name VARCHAR2(10);
BEGIN
OPEN mycur;
FETCH mycur INTO current_model_name;
WHILE mycur%FOUND LOOP
IF current_model_name = model_name THEN
mycount := mycount + 1;
END IF;
FETCH mycur INTO current_model_name;
END LOOP;
CLOSE mycur;
dbms_output.put_line('The count is ' || mycount);
END;
/