2015-10-22 73 views
0

我創建了一個完美的選擇,但是當我嘗試使用它創建視圖時,出現錯誤must specify column name for view select expression創建視圖 - Firebird DB

我的所有列都被命名。我究竟做錯了什麼? 這是我的看法代碼:

create view v_dj_milestone as 
     select j.job_number as jobnumber, 
       j.supervisor as supervisor, 
       s.activity_name as stage, 
       sc.proj_end_date as scheduledclose, 
       sc.base_start_date as baselinestart, 
       substr (j.job_number, 1, 3) as Studio, 
       case substr (j.job_number, 1, 3) 
        when '001' then 'Triad' 
        when '002' then 'Triad' 
        when '003' then 'Triad' 
        when '004' then 'Triad' 
        when '005' then 'Triangle' 
        when '006' then 'Triangle' 
        when '007' then 'Triangle' 
        when '008' then 'Triangle' 
        when '009' then 'Charlotte' 
        when '010' then 'Charlotte' 
        when '011' then 'Charlotte' 
        when '012' then 'Charlotte' 
        when '013' then 'Charlotte' 
        when '014' then 'Florida' 
        when '015' then 'Florida' 
        when '017' then 'Florida' 
        when '023' then 'Costal Carolina' 
        when '024' then 'Costal Carolina' 
        when '025' then 'Costal Carolina' 
        else 'Unknown' 
         end as DIV, 
      (sc.proj_end_date - sc.base_start_date) as Days, 
      (sc.base_calduration - (sc.proj_end_date - sc.base_start_date)) as Variance, 
      (sc.base_calduration/(sc.proj_end_date - sc.base_start_date))*100 as Accuracy 
     from job j 
      inner join cutoff_phase c 
       on (j.cutoff_phase_ID = c.cutoff_phase_id) 
      inner join sactivity s 
       on (c.sactivity_id = s.sactivity_id) 
      inner join schedule sc 
       on (sc.job_number = j.job_number); 
+0

你使用哪種版本火鳥? –

回答

0

對於我來說,in VIEW,你不能在視體使用別名。

試試這個:

create view v_dj_milestone (jobnumber, supervisor, stage, scheduledclose, baselinestart, Studio, DIV, Days, Variance, Accuracy) as 
     select j.job_number, 
       j.supervisor, 
       s.activity_name, 
       sc.proj_end_date, 
       sc.base_start_date, 
       substr (j.job_number, 1, 3), 
       case substr (j.job_number, 1, 3) 
        when '001' then 'Triad' 
        when '002' then 'Triad' 
        when '003' then 'Triad' 
        when '004' then 'Triad' 
        when '005' then 'Triangle' 
        when '006' then 'Triangle' 
        when '007' then 'Triangle' 
        when '008' then 'Triangle' 
        when '009' then 'Charlotte' 
        when '010' then 'Charlotte' 
        when '011' then 'Charlotte' 
        when '012' then 'Charlotte' 
        when '013' then 'Charlotte' 
        when '014' then 'Florida' 
        when '015' then 'Florida' 
        when '017' then 'Florida' 
        when '023' then 'Costal Carolina' 
        when '024' then 'Costal Carolina' 
        when '025' then 'Costal Carolina' 
        else 'Unknown' 
         end, 
      (sc.proj_end_date - sc.base_start_date), 
      (sc.base_calduration - (sc.proj_end_date - sc.base_start_date)), 
      (sc.base_calduration/(sc.proj_end_date - sc.base_start_date))*100 
     from job j 
      inner join cutoff_phase c 
       on (j.cutoff_phase_ID = c.cutoff_phase_id) 
      inner join sactivity s 
       on (c.sactivity_id = s.sactivity_id) 
      inner join schedule sc 
       on (sc.job_number = j.job_number); 
+0

我使用MSSQL :)。我不確定其他DBMS –

+0

非常奇怪。運行此代碼,並得到一個錯誤,說'元數據不能更新,表v_dj_milestone已經存在? 代碼正在創建一個視圖,而不是一個表,並且沒有名爲v_dj_milestone的表或視圖? –

+0

你可以放下存在視圖:) –

0

必須編碼爲

create view v_dj_milestone (jobnumber,supervisor, .. .. jName) as 
     select j.job_number as jobnumber, 
       j.supervisor as supervisor, 
       s.activity_name as stage, 
       sc.proj_end_date as scheduledclose, 
       sc.base_start_date as baselinestart, 
       substr (j.job_number, 1, 3) as Studio,  
       case substr (j.job_number, 1, 3) 
       when '001' then 'Triad' 
       when '002' then 'Triad' 
       when '003' then 'Triad' 
       when '004' then 'Triad' 
       when '005' then 'Triangle' 
       when '006' then 'Triangle' 
       when '007' then 'Triangle' 
       when '008' then 'Triangle' 
       when '009' then 'Charlotte' 
       when '010' then 'Charlotte' 
       when '011' then 'Charlotte' 
       when '012' then 'Charlotte' 
       when '013' then 'Charlotte' 
       when '014' then 'Florida' 
       when '015' then 'Florida' 
       when '017' then 'Florida' 
       when '023' then 'Costal Carolina' 
       when '024' then 'Costal Carolina' 
       when '025' then 'Costal Carolina' 
       else 'Unknown' 
        end as jName, 
+1

列出列名不是必需的 –

+0

我編輯了我的答案 –