;WITH CteData AS (
SELECT Hull_No, DTG, SerialNumber , ManHour
FROM tblcasrepV2
WHERE manhour <> 'NULL' and ISNULL(manhour,'')<> ''
)
SELECT Hull_No AS HUNum, DTG, SerialNumber, ManHour AS MH
, dbo.udf_Filter(manhour, 'GE') AS 'GE'
, dbo.udf_Filter(manhour, 'SF') AS 'SF'
, dbo.udf_Filter(manhour, 'TA') AS 'TA'
, '' AS DA
FROM CTEDATA D
ORDER BY Hull_No, DTG, SerialNumber
ALTER FUNCTION dbo.[udf_Filter]( @value varchar(max), @valuetype varchar(10))
RETURNS VARCHAR(MAX)
AS
BEGIN
SET @value = UPPER(@value)
DECLARE @RETURN_VALUE VARCHAR(MAX)
IF @value LIKE '%[0-9]%[^A-Z]%[0-9]%'
BEGIN
SET @RETURN_VALUE = NULL
END
ELSE
BEGIN
IF @valuetype = 'GE'
BEGIN
IF ISNUMERIC(@value) = 1
SET @RETURN_VALUE = @value
ELSE IF (@value LIKE '%HOUR%' OR @value LIKE '%M.H%')
SET @RETURN_VALUE = dbo.udf_GetNumeric(@value)
ELSE
SET @RETURN_VALUE = ''
END
ELSE IF @valuetype = 'SF'
BEGIN
IF (@value LIKE '%SHIP%FORCE%' OR @value LIKE '%SF%' OR @value LIKE '%S/F%')
SET @RETURN_VALUE = dbo.udf_GetNumeric(@value)
ELSE
SET @RETURN_VALUE = ''
END
ELSE IF @valuetype = 'TA'
BEGIN
IF (@value LIKE '%TA%' OR @value LIKE '%T/A%' OR @value LIKE '%TECH%ASSIST%')
SET @RETURN_VALUE = dbo.udf_GetNumeric(@value)
ELSE
SET @RETURN_VALUE = ''
END
END
RETURN @RETURN_VALUE
END