定义(标量)函数

时间:2015-02-12 10:46:46

标签: sql-server function case

我无法使用case select:

定义这样的函数
SELECT @NoShowRate=(Select case when tblPersonal.AnmeldungenXX = 0 and 
tblPersonal.Anmeldungen - tblPersonal.AnmeldungenNO = 0 then 0 
                             when tblPersonal.Anmeldungen - 
    tblPersonal.AnmeldungenNO > 0 and tblPersonal.Teilnahmen=0 then 0
                             when tblPersonal.Teilnahmen > 
                                  tblPersonal.Anmeldungen then 100
                              else 
                               ((tblPersonal.Teilnahmen*100)/(tblPersonal.Anmeldungen - 
                                tblPersonal.AnmeldungenNO))           
FROM dbo.tblPersonal WHERE tblPersonal.aktiv=1 and 
                        tblPersonal.MaID=@MaID)

但这个可行:

SELECT @NoShowRate=
      (SELECT ((tblPersonal.Teilnahmen*100)/(tblPersonal.Anmeldungen -
           tblPersonal.AnmeldungenNO))      
FROM dbo.tblPersonal WHERE tblPersonal.aktiv=1 and tblPersonal.MaID=@MaID)

请帮助定义带有案例选择的标量函数(?) 迈克尔

 MaID AnmeldungenXX AnmeldungenNO Teilnahmen Reliability
    1   0   0   23  NULL
    2   1   0   1   NULL
    3   2   1   2   NULL
    4   0   0   0   NULL
    5   0   0   0   NULL
    6   0   0   1   NULL
    7   0   0   0   NULL
    8   1   0   35  NULL
    9   0   0   0   NULL
    10  0   0   0   NULL
    11  1   0   25  NULL
    12  2   4   17  NULL
    13  0   0   0   NULL
    14  0   0   0   NULL

1 个答案:

答案 0 :(得分:0)

第一个选择语句缺少结束,它应该像下面一个

SELECT @NoShowRate=(Select case when tblPersonal.AnmeldungenXX = 0 and tblPersonal.Anmeldungen - tblPersonal.AnmeldungenNO = 0 then 0 
                             when tblPersonal.Anmeldungen - tblPersonal.AnmeldungenNO > 0 and tblPersonal.Teilnahmen=0 then 0
                             when tblPersonal.Teilnahmen > tblPersonal.Anmeldungen then 100
                        else ((tblPersonal.Teilnahmen*100)/(tblPersonal.Anmeldungen - tblPersonal.AnmeldungenNO))    end         

                 FROM dbo.tblPersonal WHERE tblPersonal.aktiv=1 and tblPersonal.MaID=@MaID)