Cuestión : Cheque de la cordura en la modificación de UDF

He modificado mi UDF para agregar las tarifas adicionales para el fin de semana daya y la noche. Las tarifas deben ahora ser aplicadas para el día/la noche entonces iguales que el día laborable rates.

Does esta mirada correcta:
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
>USE notpretty " del class= " del id= " codeSnippet831386 del
 0 del isnull (weekenddaycost, 0)
                    ENTONCES
                     CASO CUANDO datepart (hora, @date) entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend)
                     ENTONCES
                     weekenddaycost
                     
                     weekendnightcost
                     EXTREMO
                     
                         CASO
                         CUANDO datepart (hora, @date) entre el datepart (hora, weekdaystart) y datepart (hora, weekdayend)
                         ENTONCES weekdaycost
                         Weeknightcost OTRO
                         EXTREMO
                    EXTREMO, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
  De EnergySuiteDB.dbo.Rates
  donde UtilityName=@util 
  Y @date entre EffectiveStartDate y EffectiveEndDate 
  Orden por el desc de la identificación    -- conseguir la fila “pasada” que cubre la fecha pedida.

  si @@rowcount = 0
     insertar el @tbl 
     seleccionar la tapa 1 --EffectiveStartDate, EffectiveEndDate,
                  CASO CUANDO está ido (DATENAME (DW, @date), 1) = “S” y <> 0 del isnull (weekenddaycost, 0)
                       ENTONCES
                     CASO CUANDO datepart (hora, @date) entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend)
                     ENTONCES
                     weekenddaycost
                     
                     weekendnightcost
                     EXTREMO
                     
                         CASO
                         CUANDO datepart (hora, @date) entre el datepart (hora, weekdaystart) y datepart (hora, weekdayend)
                         ENTONCES weekdaycost
                         Weeknightcost OTRO
                         EXTREMO
                       EXTREMO, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     De EnergySuiteDB.dbo.Rates
     donde UtilityName=@util 
     orden por el desc de EffectiveEndDate   -- el enddate más alto pertenece “para remar 1” toda la tarifa de la cubierta/de defecto.
  vuelta 
EXTREMO
class= del

Respuesta : Cheque de la cordura en la modificación de UDF

Bien, pienso que necesita la comprobación adicional en allí…

Así pues, tener una mirada en:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
ALTERAR LA FUNCIÓN [dbo]. [udf_getrates_3] (fecha y hora del @date, @util varchar (50))
VUELVE la tabla del @tbl (DINERO del chargerate, DINERO de la recaudación, DINERO del caprate, flotador de ChargeCap, el dinero de StandingDayCharge)
COMO
COMENZAR


  declarar el carbón de leña del @dw (1)
  fijar el @dw = se fue (DATENAME (DW, @date), 1)

  declarar el @hr internacional
  fijar el @hr = el datepart (hora, el @date)

  insertar el @tbl 
  seleccionar la tapa 1 --EffectiveStartDate, EffectiveEndDate, 
         CASO CUANDO @dw = “S” y (   (@hr entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend) e isnull (weekenddaycost, 0) <> 0)
                                  o (@hr NO entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend) e isnull (weekendnightcost, 0) <> 0))
              ENTONCES
                     CASO CUANDO @hr entre el datepart (hora, weekenddaystart) y el datepart (hora, weekenddayend)
                          ENTONCES weekenddaycost
                          Weekendnightcost OTRO
                     EXTREMO
               
                     CASO CUANDO @hr entre el datepart (hora, weekdaystart) y el datepart (hora, weekdayend)
                          ENTONCES weekdaycost
                          Weeknightcost OTRO
                     EXTREMO
         EXTREMO, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     De EnergySuiteDB.dbo.Rates
  donde  UtilityName=@util 
  Y @date entre EffectiveStartDate y EffectiveEndDate 
  Orden por el desc de la identificación    -- conseguir la fila “pasada” que cubre la fecha pedida.

  si @@rowcount = 0
     insertar el @tbl 
     seleccionar la tapa 1 --EffectiveStartDate, EffectiveEndDate, 
         CASO CUANDO @dw = “S” y (   (@hr entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend) e isnull (weekenddaycost, 0) <> 0)
                                  o (@hr NO entre el datepart (hora, weekenddaystart) y datepart (hora, weekenddayend) e isnull (weekendnightcost, 0) <> 0))
              ENTONCES
                     CASO CUANDO @hr entre el datepart (hora, weekenddaystart) y el datepart (hora, weekenddayend)
                          ENTONCES weekenddaycost
                          Weekendnightcost OTRO
                     EXTREMO
               
                     CASO CUANDO @hr entre el datepart (hora, weekdaystart) y el datepart (hora, weekdayend)
                          ENTONCES weekdaycost
                          Weeknightcost OTRO
                     EXTREMO
         EXTREMO, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     De EnergySuiteDB.dbo.Rates
     donde UtilityName=@util 
     orden por el desc de EffectiveEndDate   -- el enddate más alto pertenece “para remar 1” toda la tarifa de la cubierta/de defecto.
  vuelta 
EXTREMO
Otras soluciones  
 
programming4us programming4us