Call Function only single time for multiple places in a query

sql, sql-server

Solution

Try this one -

SELECT
    value,
    float_Quantity,
    int_PackingListDetailId =
                CASE
                    WHEN value = 0 THEN 1
                    WHEN value < float_Quantity THEN 2
                    WHEN value = float_Quantity THEN 3
                END
FROM dbo.tblSdPackingListDetail t1
CROSS APPLY (
    SELECT value = dbo.TotalPackagedQty(t1.int_PackingListDetailId)
) tt
WHERE int_PackingId = '10901032014121313496PM0'

Problem

SQL Query ``` SELECT dbo.TotalPackagedQty(t1.int_PackingListDetailId), float_Quantity, int_PackingListDetailId CASE WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) = 0 THEN 1 WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) < float_Quantity THEN 2 WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) = float_Quantity THEN 3 END FROM tblSdPackingListDetail t1 WHERE int_PackingId = '10901032014121313496PM0' ``` This is a sql query. I am using a function with the name dbo.TotalPackagedQty(t1.int_PackingListDetailId). I am using this function 4 times in query. Output is coming correct, but i want to call this function only single time to increase speed of the query. Kindly suggest me a better option in query not stored procedure or other things.

Original source