2012-02-15 10 views
0

今年は月あたりの総訪問数を表示したいと思います。しかし、次のクエリは、式が見つからないというエラーコードを返します。私は何を逃したのですか? 今年の月間訪問数

SELECT CASE 
    WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '),  'mm/dd/yyyy') = 1 THEN 'January ' 
    WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 2 THEN 'February' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 3 THEN 'March' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 4 THEN 'April' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 5 THEN 'May' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 6 THEN 'June' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 7 THEN 'July' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 8 THEN 'August' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 9 THEN 'September' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 10 THEN 'October' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 11 THEN 'November' 
ELSE 'December' 
    END AS "Month " , 
    COUNT(*) AS "Number of visits" 
FROM allrecord where extract(year from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')= extract(year from date sysdate) 
GROUP BY CASE 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 1 THEN 'January ' 
    WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 2 THEN 'February' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 3 THEN 'March' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 4 THEN 'April' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 5 THEN 'May' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 6 THEN 'June' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 7 THEN 'July' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 8 THEN 'August' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 9 THEN 'September' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 10 THEN 'October' 
WHEN extract(month from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy') = 11 THEN 'November' 

     ELSE 'December' 
      END; 

尋ねるために余分な質問

は、私は、Oracleアプリケーションビルダを使用してアプリケーションを作成しています。しかし、私は、ページを作成し、フォーム内のレコードを編集すると、エラーメッセージは、データを取得できることを示しています。どういう意味ですか?私が逃したすべてのステップ?

+2

これはクエリです?? –

+0

Oracleに関する私の経験はほとんどありませんが、わかりましたので、この厄介なcase文の代わりにTO_CHAR(visit_time、 'MONTH') 'を使用できますか? – GarethD

+0

Oracle Application Builderに関するその他のご質問については、別途質問し、エラーの詳細を記載してください。 –

答えて

1

は、Oracleは、このような日からMONTHNAMEを抽出する機能を持っていない:

SELECT TO_CHAR(visit_time 'MONTH') as month 
COUNT(*) AS "Number of visits" 
FROM allrecord 
WHERE extract(year from date TO_DATE (TO_CHAR (visit_time, 'mm/dd/yyyy '), 'mm/dd/yyyy')= extract(year from date sysdate) 
GROUP BY TO_CHAR(visit_time 'MONTH') 
4

このクエリは、すべてのダウンに凝縮することができます:欠落している表現の誤差があります

select to_char(VISIT_TIME, 'fmMonth') as "Month" 
     ,count(*) as "Number of Visits" 
    from ALLRECORD 
    where extract(year from VISIT_TIME) = extract(year from sysdate) 
group by to_char(VISIT_TIME, 'fmMonth'); 

キーワードdateをの機能のto_dateの前に置いています。それは不要です。あなたが希望のいずれかを使用:

select extract (year from date '2011-01-01') from sys.dual 

か:

select extract (year from to_date('2011-01-01')) from sys.dual 

しかし決して:

select extract (year from date to_date('2011-01-01')) from sys.dual 
+0

visit_timeはタイムスタンプです – jannyeu

+0

'to_char'、' to_date'、 'extract'などはすべて' timestamp'型で動作します。 –

関連する問題