2016-11-07 9 views
2

私はユニオンallでクエリでいくつかのレジスタを終了するかどうかを見るためにループをしています。それは私が(conf_cal)カウントを示しユニオンクエリでカウントが動作しません

SELECT COUNT(CONF_CAL) FROM (
       SELECT CONF_CAL from JOB j 
       where CONF_CAL IS NOT NULL 
       UNION 
       select DAYS_CAL from JOB j 
       where DAYS_CAL IS NOT NULL 
       UNION 
       select weeks_cal from JOB j 
       where weeks_cal IS NOT NULL) WHERE CONF_CAL='ALLDAYS' 

= 1

私はできません:

DECLARE 
COUNT INTEGER; 
BEGIN 
FOR I IN (SELECT CALENDAR FROM DF_CALENDAR) LOOP 
    DBMS_OUTPUT.PUT_LINE(I.CALENDAR); 
     SELECT COUNT(CONF_CAL) into CUENTA FROM (
       SELECT CONF_CAL from JOB j 
       where CONF_CAL IS NOT NULL 
       UNION 
       select DAYS_CAL from JOB j 
       where DAYS_CAL IS NOT NULL 
       UNION 
       select weeks_cal from JOB j 
       where weeks_cal IS NOT NULL) WHERE CONF_CAL='I.CALENDAR'; 

       DBMS_OUTPUT.PUT_LINE(COUNT); 
       DBMS_OUTPUT.PUT_LINE('CALENDAR ...'|| I.CALENDAR || ' COUNT NUMBER ' || COUNT); 
END LOOP; 
END; 

Allwasカウント変数が私に0を示すが、ときに私がやる:私はこれらをやりましたどうしてloop with dontが動作するのか理解する。誰かが助けてくれる?

答えて

1

ループで何もする必要はありません。

私はWHERE CONF_CAL='I.CALENDER'が文字列として解釈され、列の値として解釈されないと思います。

'を削除するようにしてください:

WHERE CONF_CAL=I.CALENDER 
0

タイプミスかもしれませんか?

COUNT(CONF_CAL) into CUENTA 

は次のようになります。

COUNT(CONF_CAL) into COUNT 

あなたは変数COUNT、ないCUENTAを宣言し、印刷しています。

+0

申し訳ありませんが、カウントするように変更して動作しません –

0

なぜ単に:

SELECT dfc.calendar, 
     COUNT(cc.conf_cal) count_cal 
FROM df_calendar dfc 
     LEFT OUTER JOIN (SELECT conf_cal 
         FROM job 
         WHERE conf_cal IS NOT NULL 
         UNION 
         SELECT days_cal 
         FROM job 
         WHERE days_cal IS NOT NULL 
         UNION 
         SELECT weeks_cal 
         FROM job 
         WHERE weeks_cal IS NOT NULL) cc 
     ON (dfc.calendar = cc.conf_cal) 
GROUP BY dfc.calendar; 

関連する問題