You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
259 lines
6.0 KiB
259 lines
6.0 KiB
USE [qw2021]
|
|
GO
|
|
|
|
/****** Object: UserDefinedFunction [dbo].[calc_leistung] Script Date: 26.05.2021 06:43:15 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
-- =============================================
|
|
-- Author: <Author,,Name>
|
|
-- Create date: <Create Date, ,>
|
|
-- Description: <Description, ,>
|
|
-- =============================================
|
|
CREATE FUNCTION [dbo].[calc_leistung] (
|
|
@type VARCHAR(255)
|
|
,@wert VARCHAR(MAX)
|
|
)
|
|
RETURNS INT
|
|
AS
|
|
BEGIN
|
|
DECLARE @min INT;
|
|
DECLARE @sek INT;
|
|
DECLARE @hs INT;
|
|
DECLARE @m INT
|
|
DECLARE @cm INT
|
|
DECLARE @timestring VARCHAR(MAX);
|
|
DECLARE @pos INT
|
|
|
|
SET @timestring = @wert
|
|
|
|
IF @type = 'MM:SS:HS'
|
|
BEGIN
|
|
IF LEN(@timestring) = 8
|
|
SET @timestring = '00:' + @timestring;
|
|
|
|
IF LEN(@timestring) = 5
|
|
SET @timestring = '00:00:' + @timestring;
|
|
SET @min = DATEPART(MINUTE, @timestring);
|
|
SET @sek = DATEPART(SECOND, @timestring);
|
|
SET @hs = DATEPART(millisecond, @timestring);
|
|
SET @min = @min * 1000 * 60;
|
|
SET @sek = @sek * 1000;
|
|
SET @hs = @hs * 10;
|
|
|
|
RETURN @min + @sek + @hs;
|
|
END;
|
|
|
|
IF @type = 'SS:HS'
|
|
BEGIN
|
|
SET @timestring = @wert
|
|
SET @timestring = replace(@timestring, '.', ':');
|
|
|
|
IF len(@timestring) = 4
|
|
SET @timestring = '00:00:0' + @timestring
|
|
|
|
IF len(@timestring) = 5
|
|
SET @timestring = '00:00:' + @timestring
|
|
SET @min = DATEPART(MINUTE, @timestring);
|
|
SET @sek = DATEPART(SECOND, @timestring);
|
|
SET @hs = DATEPART(millisecond, @timestring);
|
|
SET @min = @min * 1000 * 60;
|
|
SET @sek = @sek * 1000;
|
|
SET @hs = @hs * 10;
|
|
|
|
RETURN @min + @sek + @hs;
|
|
END
|
|
|
|
IF @type = 'MM.CM'
|
|
BEGIN
|
|
SET @timestring = @wert
|
|
|
|
IF len(@timestring) = 4
|
|
SET @timestring = '0' + @timestring
|
|
SET @pos = charindex('.', @timestring)
|
|
SET @m = SUBSTRING(@timestring, 1, @pos - 1)
|
|
SET @cm = SUBSTRING(@timestring, @pos+1, 2)
|
|
SET @m = @m * 100
|
|
|
|
RETURN @m + @cm
|
|
|
|
|
|
END;
|
|
return 0
|
|
end
|
|
GO
|
|
|
|
/****** Object: UserDefinedFunction [dbo].[leistungen_rechnen] Script Date: 26.05.2021 06:43:15 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
-- =============================================
|
|
-- Author: <Author,,Name>
|
|
-- Create date: <Create Date, ,>
|
|
-- Description: <Description, ,>
|
|
-- =============================================
|
|
CREATE FUNCTION [dbo].[leistungen_rechnen] (
|
|
@disziplin VARCHAR(255)
|
|
,@Resultat VARCHAR(255)
|
|
)
|
|
RETURNS INT
|
|
AS
|
|
BEGIN
|
|
DECLARE @res INT;
|
|
DECLARE @hh VARCHAR(2);
|
|
DECLARE @mm VARCHAR(2);
|
|
DECLARE @ss VARCHAR(2);
|
|
DECLARE @hs VARCHAR(2);
|
|
DECLARE @p INT;
|
|
DECLARE @me VARCHAR(2);
|
|
DECLARE @cm VARCHAR(2);
|
|
DECLARE @resstring VARCHAR(255);
|
|
declare @2p int
|
|
IF @disziplin IN (
|
|
'10H'
|
|
,'60M'
|
|
,'600'
|
|
,'60H'
|
|
,'80M'
|
|
,'80H'
|
|
)
|
|
BEGIN
|
|
SET @resstring = @Resultat;
|
|
SET @p = CHARINDEX('.', @resstring);
|
|
if @p=0 set @resstring=@resstring+'.00'
|
|
SET @p = CHARINDEX('.', @resstring);
|
|
SET @2p = CHARINDEX(':', @resstring);
|
|
|
|
IF @p > 0 and @2p=0
|
|
BEGIN
|
|
SET @ss = SUBSTRING(@resstring, 1, @p - 1);
|
|
SET @hs = SUBSTRING(@resstring, @p + 1, LEN(@resstring) - @p);
|
|
|
|
IF LEN(@ss) = 1
|
|
SET @ss = '0' + @ss;
|
|
|
|
IF LEN(@hs) = 1
|
|
SET @hs = @hs + '0';
|
|
SET @res = (@ss * 1000) + @hs * 10;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @p = CHARINDEX(':', @resstring)
|
|
|
|
IF @p > 0
|
|
BEGIN
|
|
IF len(@resstring) = 7
|
|
SET @resstring = '0' + @resstring
|
|
SET @mm = SUBSTRING(@resstring, 1, 2)
|
|
SET @ss = SUBSTRING(@resstring, 4, 2)
|
|
SET @hs = SUBSTRING(@resstring, 7, 2)
|
|
SET @res = (@mm * 60 * 100) + (@ss * 100) + (@hs )
|
|
set @res=@res*10
|
|
END
|
|
END;
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @resstring = @Resultat
|
|
SET @p = CHARINDEX('.', @resstring)
|
|
if @p=0 set @resstring=@resstring+'.00'
|
|
SET @p = CHARINDEX('.', @resstring)
|
|
|
|
SET @ME = SUBSTRING(@resstring, 1, @p - 1);
|
|
SET @CM = SUBSTRING(@resstring, @p + 1, LEN(@resstring) - @p);
|
|
|
|
IF LEN(@me) = 1
|
|
SET @me = '0' + @me
|
|
|
|
IF LEN(@cm) = 1
|
|
SET @cm = @cm + '0'
|
|
SET @res = ((@me * 100) + @cm)*10
|
|
END
|
|
|
|
RETURN @res;
|
|
END;
|
|
GO
|
|
|
|
/****** Object: UserDefinedFunction [dbo].[Punkte_Rechnen] Script Date: 26.05.2021 06:43:15 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Author: <Author,,Name>
|
|
-- Create date: <Create Date, ,>
|
|
-- Description: <Description, ,>
|
|
-- =============================================
|
|
CREATE FUNCTION [dbo].[Punkte_Rechnen]
|
|
(
|
|
@geschlecht VARCHAR(255),
|
|
@disziplin VARCHAR(255),
|
|
@Wert VARCHAR(255)
|
|
|
|
)
|
|
RETURNS float
|
|
BEGIN
|
|
|
|
DECLARE @awert DECIMAL(20,10)
|
|
DECLARE @bwert DECIMAL(20,2)
|
|
DECLARE @cwert DECIMAL(20,3)
|
|
DECLARE @tempwert DECIMAL(38,15)
|
|
DECLARE @result DECIMAL(38,15)
|
|
DECLARE @werte_disziplin VARCHAR(20)
|
|
|
|
SET @werte_disziplin=@disziplin
|
|
IF @disziplin='BAL' SET @Werte_Disziplin='BALL'
|
|
IF @disziplin='WEZ' SET @werte_disziplin='WEIT'
|
|
IF @disziplin='600' SET @werte_disziplin='600'
|
|
SELECT @awert=awert, @bwert=bwert,@cwert=cwert FROM dbo.WerteTabelle WHERE gender=@geschlecht AND disziplin=@werte_disziplin
|
|
|
|
|
|
IF @werte_disziplin IN ('Weit','Drei','Stab','Kugel','Speer','Diskus','Hammer','Ball','Hoch') BEGIN
|
|
set @tempwert=-1
|
|
SET @tempwert = TRY_CAST(REPLACE(@WERT, ',', '') AS decimal(10, 8))
|
|
if @tempwert is null set @tempwert=@wert
|
|
SET @result=power(((@tempwert-@bwert)/100),@cwert)
|
|
SET @result=@awert*@result
|
|
END
|
|
IF @Werte_Disziplin IN ('50','60','80','100','200','300','400','600','800','1000','1500','2000','3000','5000','1000','50H','60h','80h','100h','110h','300h','400h','1500 St','2000 St','3000 St','4x100','4x400') begin
|
|
DECLARE @t TIME
|
|
IF LEN(@wert)=5 BEGIN
|
|
SET @wert='00:00:'+@Wert
|
|
end
|
|
if len(@wert)=4 begin
|
|
set @wert='00:00:0'+@wert;
|
|
end
|
|
wHILE LEN(@wert)<8 begin
|
|
SET @wert='00:'+@wert
|
|
end
|
|
set @wert=replace(@wert,',','.')
|
|
SET @t=CONVERT( TIME, @wert);
|
|
DECLARE @hs INTEGER
|
|
SET @hs=0
|
|
|
|
SET @hs=@hs+DATEPART(MINUTE,@t)*60*100
|
|
SET @hs=@hs+DATEPART(Second,@t)*100
|
|
SET @hs=@hs+DATEPART(MILLISECOND,@t)/10
|
|
SET @tempwert=@hs
|
|
SET @result=power(((@bwert - @tempwert)/100),@cwert)
|
|
SET @result=@awert*@result
|
|
end
|
|
--SET @result= (@tempwert-@bwert)/100
|
|
--SET @result=POWER(@tempwert,@cwert)
|
|
|
|
RETURN @result
|
|
|
|
END
|
|
GO
|
|
|