If what you want is a function (I do not know whether to recommend you) that returns the day of the week, without considering the previous answer (which is valid). You should do, for example:
CREATE FUNCTION UDF_DIASEMANA(
@FECHA DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @DIA INT = DATEPART(WEEKDAY, @FECHA)
RETURN @DIA + CASE WHEN @DIA >= 2 THEN -2 ELSE 5 END
END
GO
SELECT
DBO.UDF_DIASEMANA('20180115'),
DBO.UDF_DIASEMANA('20180116'),
DBO.UDF_DIASEMANA('20180117'),
DBO.UDF_DIASEMANA('20180118'),
DBO.UDF_DIASEMANA('20180119'),
DBO.UDF_DIASEMANA('20180120'),
DBO.UDF_DIASEMANA('20180121'),
DBO.UDF_DIASEMANA('20180122')
You'll get:
+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 |
+---+---+---+---+---+---+---+---+
DEMO