我改用如下的方式,仍不行:
CREATE PROCEDURE test6 select 工號,姓名, a1=
case when (select top 1 遲到 from test2) >5 THEN 全勤獎-30 else 全勤獎 end 
,a1 /30 as r from test3
GO
我實在想不出辦法了,在access中可以很輕松的實現類似的計算,難道在sql中真不能這樣實現不???

解决方案 »

  1.   

    -----是这个意思吗?
    select b.工號,b.姓名,case when a.[遲到]>5 then b.全勤獎-30 else b.全勤獎 end 
    ,case when a.[遲到]>5 then b.全勤獎-30 else b.全勤獎 end /30 as r from test2 a right join test3 b
    on a.工號 = b.工號
      

  2.   

    是這個意思,因為這樣寫語句很多,所以我像access中的別名一樣,直接通過別名來計算,我試了,在查詢中不能直接用別名進行計算,所以我想用存諸過程是否可以實現
    在access中:
        select a as b,b+1 as c from test 
    這樣的方式是可以實現,但在sql中不知該怎樣實現
      

  3.   

    -- 
    select a as b,b+1 as c from test 
    在SQL中
    要这样写
    select a as b,a+1 as c from test
      

  4.   

    CREATE PROCEDURE test6 
    (
    @a numeric(10,0)
    )
    as
    select 工號,姓名, 
    (case when (select top 1 遲到 from test2) >5 THEN 全勤獎-30 else 全勤獎 end )/30 as r  from test3
    GO