• It seems almost fine, but it's weird. You're not summing up the values. I added the SUM() and converted it to a iTVF. You need to test it as well to be sure it works as it should.

    --DECLARE @bid_Id UNIQUEIDENTIFIER;

    --SET @bid_Id = '475C1532-20CC-437A-9642-B2A87D79036A'

    ALTER FUNCTION [dbo].[fn_GetSumOfPointsForBidTEST1]

    (

    -- Add the parameters for the function here

    @bid_Id UNIQUEIDENTIFIER

    )

    RETURNS TABLE

    AS

    RETURN

    SELECT TOP 1 CASE IsDirectAuction

    WHEN 0 THEN (SELECT SUM(Calc_Points) FROM [dbo].[vw_Bid_Criterias]

    WHERE BID_ID = @bid_Id AND

    CRITERIA_ID IN ( SELECT CRITERIA_ID

    FROM [dbo].[vw_Bid_Criterias]

    WHERE BID_ID = @bid_Id

    --New section for OtherCriteria

    UNION

    SELECT drtc.CRITERIA_ID

    FROM BID_CALCULATIONS bc

    INNER JOIN CRITERIAS c ON bc.criteria_ID = c.ID

    INNER JOIN BIDS b ON b.ID = bc.bid_ID

    INNER JOIN CALL_FOR_TENDERS cft ON cft.id = b.call_for_tender_ID

    INNER JOIN DECISIONS_ON_REQUESTS_FOR_TENDERS_CRITERIAS drtc ON drtc.decision_for_tender_id = cft.decision_on_request_for_tender_ID

    AND drtc.criteria_id = c.ID

    WHERE bid_ID = @bid_Id

    AND drtc.points > 0

    AND number > 13

    ))

    WHEN 1 THEN (SELECT SUM(points) FROM [dbo].[BID_CALCULATIONS]

    WHERE bid_ID = @bid_Id AND

    CRITERIA_ID IN ( SELECT crt.ID

    FROM bids b

    INNER JOIN tbl_EntityInstanceCallForTender e ON b.call_for_tender_ID = e.CallForTenderID

    INNER JOIN tbl_ProcessCriterias pc ON e.EntityID = pc.EntityID

    INNER JOIN tbl_Criterias c ON pc.ID = c.ProcessID

    INNER JOIN tbl_CriteriaTypes ct ON c.OrderNumber = ct.ID

    INNER JOIN CRITERIAS crt ON ct.OrderNumber = crt.number

    WHERE b.id = @bid_Id

    AND c.IsDeleted = 0

    UNION

    SELECT crt.ID

    FROM bids b

    INNER JOIN tbl_EntityInstanceLotsCallForTender e ON b.call_for_tender_ID = e.CallForTenderID

    INNER JOIN tbl_ProcessCriterias pc ON e.EntityID = pc.EntityID

    INNER JOIN tbl_Criterias c ON pc.ID = c.ProcessID

    INNER JOIN tbl_CriteriaTypes ct ON c.OrderNumber = ct.ID

    INNER JOIN CRITERIAS crt ON ct.OrderNumber = crt.number

    WHERE b.id = @bid_Id

    AND c.IsDeleted = 0

    --New section for OtherCriteria

    UNION

    SELECT drtc.CRITERIA_ID

    FROM BID_CALCULATIONS bc

    INNER JOIN CRITERIAS c ON bc.criteria_ID = c.ID

    INNER JOIN BIDS b ON b.ID = bc.bid_ID

    INNER JOIN CALL_FOR_TENDERS cft ON cft.id = b.call_for_tender_ID

    INNER JOIN DECISIONS_ON_REQUESTS_FOR_TENDERS_CRITERIAS drtc ON drtc.decision_for_tender_id = cft.decision_on_request_for_tender_ID

    AND drtc.criteria_id = c.ID

    WHERE bid_ID = @bid_Id

    AND drtc.points > 0

    AND number > 13

    ))

    ELSE 0 END AS points

    FROM vw_CallForTender

    WHERE ID IN ( SELECT call_for_tender_ID

    FROM BIDS

    WHERE ID = @bid_Id);

    Luis C.
    General Disclaimer:
    Are you seriously taking the advice and code from someone from the internet without testing it? Do you at least understand it? Or can it easily kill your server?

    How to post data/code on a forum to get the best help: Option 1 / Option 2