Advertisement
Guest User

Untitled

a guest
May 29th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.53 KB | None | 0 0
  1. IF EXISTS(SELECT * FROM sys.objects WHERE type='FN' AND name='fn_rozmyte')
  2. DROP FUNCTION fn_rozmyte
  3. GO
  4.  
  5. CREATE FUNCTION fn_rozmyte(@earning INT, @wsp INT) RETURNS FLOAT(4)
  6. BEGIN
  7.     DECLARE @a INT, @b INT, @c INT, @d INT, @low FLOAT(4), @middle FLOAT(4), @high FLOAT(4), @return_value FLOAT(4)
  8.     SET @a = 1500
  9.     SET @b = 3000
  10.     SET @c = 4500
  11.     SET @d = 6000
  12.     BEGIN
  13.         if (@earning <= @a)
  14.             begin
  15.                 SET @low = 1.0
  16.                 set @middle = 0.0
  17.                 set @high = 0.0
  18.             end
  19.         if (@earning >= @b and @earning <= @c)
  20.             begin
  21.                 SET @low = 0.0
  22.                 set @middle = 1.0
  23.                 set @high = 0.0
  24.             end
  25.         if (@earning >= @d)
  26.             begin
  27.                 set @low = 0.0
  28.                 set @middle = 0.0
  29.                 set @high = 1.0
  30.             end
  31.            
  32.         if (@earning > @a and @earning < @b)
  33.             begin
  34.                 declare @first float, @second float
  35.                 set @first = 1.0 / (@a - @b)
  36.                 set @second = -@first * @b
  37.                 set @low = @first * @earning + @second
  38.                 set @middle = 1.0 - @low
  39.                 set @high = 0.0
  40.             end
  41.         if (@earning > @c and @earning < @d)
  42.             begin
  43.                 set @first = 1.0 / (@c - @d)
  44.                 set @second = -@first * @d
  45.                 set @low = 0.0
  46.                 set @middle = @first * @earning + @second
  47.                 set @high = 1.0 - @middle
  48.             end
  49.     END
  50.     if (@wsp = 1)
  51.         set @return_value = @low
  52.     if (@wsp = 2)
  53.         set @return_value = @middle
  54.     if (@wsp = 3)
  55.         set @return_value = @high
  56.  
  57.     RETURN @return_value
  58. END
  59. GO
  60.  
  61. SELECT e.id_employee, e.name, e.surname, e.earnings, dbo.fn_rozmyte(e.earnings, 1) AS low, dbo.fn_rozmyte(e.earnings, 2) AS middle, dbo.fn_rozmyte(e.earnings, 3) AS high
  62. FROM hotel..employee e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement