2013-10-09 77 views
0

如何在不使用内置COUNT函数的情况下根据条件计算表中的字段?有没有办法做到这一点?在不使用内置COUNT(*)函数的情况下执行COUNT

要求如下:

创建一个PL/SQL函数调用findtotalcarmodels要返回的总人数 属于一个特定的汽车模型。该函数应该有一个单独的 IN参数作为model_name。然后,您应该使用明确的光标来计算属于该车型的汽车数量并返回最终计数。您不得使用任何隐式游标,表连接,子查询,集合运算符,组函数或SQL函数(例如COUNT)来创建此函数。

+1

'SUM(1)',任何人? – dasblinkenlight

+1

'DCOUNT'需要更多的爱 – SheetJS

+0

对于Oracle SQL? – Splunk

回答

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; 
/
2
SUM(CASE WHEN <condition on your fields> THEN 1 ELSE 0 END) 
相关问题