2012-02-19 8 views
0

このSQLビューでは少し問題があります。SQLによる支援の表示

CREATE OR REPLACE VIEW view_themed_booking AS 
SELECT tb.*,   
     CASE 
     WHEN (tb.themed_party_size % 2) = 0 THEN 
      (tb.themed_party_size-2)/2 
     ELSE ((tb.themed_party_size-2)/2) + 0.5 
     END themed_tables 
    FROM themed_booking tb; 

誰でも私を助けることができますか?私はビューの最後に列を追加しようとしています。(S-2)/2の自然数結果Sthemed_party_sizeです。

私が自然数結果を言ったのは、.5で終わる答えを丸めたような意味なので、S=7なら答えは3で、2.5ではありません。

それは私が、私はPL/SQLを使用できるようにOracleサーバーに接続されているのsqldeveloperを使用しています違いをした場合、私は試してみて、上記のコードを実行したときに私が手にエラーが

Error starting at line 1 in command: 
CREATE OR REPLACE VIEW view_themed_booking AS 
SELECT tb.*,   
    CASE WHEN (tb.themed_party_size % 2) = 0 
    THEN (tb.themed_party_size-2)/2 
    ELSE ((tb.themed_party_size-2)/2) + 0.5 
    END themed_tables 
FROM themed_booking tb 
Error at Command Line:3 Column:34 
Error report: 
SQL Error: ORA-00911: invalid character 
00911. 00000 - "invalid character" 
*Cause: identifiers may not start with any ASCII character other than 
      letters and numbers. $#_ are also allowed after the first 
      character. Identifiers enclosed by doublequotes may contain 
      any character other than a doublequote. Alternative quotes 
      (q'#...#') cannot use spaces, tabs, or carriage returns as 
      delimiters. For all other contexts, consult the SQL Language 
      Reference Manual. 
*Action: 

です。

+0

でエラーを追加するのを忘れ申し訳ありませんああハハ! – geekman92

答えて

2

は、私はあなたがCEIL()またはROUND()機能を簡素化することができると思います。

CREATE OR REPLACE VIEW view_themed_booking AS 
SELECT tb.*,   
     ROUND((tb.themed_party_size-2)/2) AS themed_tables 
    FROM themed_booking tb; 

わからないが、なぜあなたはそのエラーを取得します。おそらく、%演算子はOracleでは使用できません。このリンクは以下のように示唆しています:Fundamentals of PL/SQL。しかし、MOD()機能があるようです。

+0

それは素晴らしい、優れた働いた!ありがとう! =) – geekman92

3

エラーメッセージは、問題の内容を示しています。ラインで ルック:3カラム:34 それは私の疑惑は、あなたがモジュロ演算子を使用しようとしているということである無効な文字

CREATE OR REPLACE VIEW view_themed_booking AS 
SELECT tb.*,   
    CASE WHEN (tb.themed_party_size % 2) = 0 
           ^

です。 は、Oracle PL/SQLを使用しているので、あなたはここでmod

を使用する必要があります参照Oracle/PLSQL: Mod Function

+0

オハイオ州大丈夫、知っておいてよかった!ありがとう! =) – geekman92