创建视图 - Firebird DB

时间:2015-10-22 03:46:57

标签: sql firebird

我创建了一个完美无缺的选择,但是当我尝试使用它创建视图时,我收到错误must specify column name for view select expression

我的所有列都已命名。我究竟做错了什么? 这是我的观看代码:

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);

2 个答案:

答案 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);

答案 1 :(得分: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,