I have defined `function` with `table value parameter` which `returns` `median` as per values passed to it. `Function` defined as:

    CREATE FUNCTION [dbo].[fn_GetMedian](@List TypeMedian READONLY)
    RETURNS INT
    AS
    BEGIN
    <function body>
    END

And `Table Type` `TypeMedian` definition as:

    CREATE TYPE [dbo].[TypeMedian] AS TABLE(
    	[VALUE] [int] NULL
    )

I have a `table` with certain `column` and wants to fill `table` with values.

All `columns` of `table` would filled by calculating `SUM` and `MEDIAN` of `columns` from another `table`.

So when I going to fill `table` I'm doing following `operation` for each `column`:

   

        DECLARE @tbl_Median TypeMedian

        INSERT INTO @tbl_Median
        SELECT L.Col1
        FROM @tbl_Listing L;
        
        UPDATE @tbl_Result
        SET Col1 = dbo.fn_GetMedian(@tbl_Median); --which returns `MEDIAN`

        DELETE FROM @tbl_Median
        INSERT INTO @tbl_Median
        SELECT L.Col2
        FROM @tbl_Listing L;

       UPDATE @tbl_Result
       SET Col2 = dbo.fn_GetMedian(@tbl_Median)
       .
       .
       .
Like above I'm doing this as for all `column`. How to do that in a single `query` instead of repeating `update query` for each `column`?

Eg.

    CREATE TABLE LISTING(
    ListingCol1 INT,
    ListingCol2 INT,
    ListingCol3 INT,
    ListingCol4 INT,
    ListingCol5 INT)
    
    CREATE TABLE RESULT(
    Col1 INT,
    Col2 INT,
    Col3 INT,
    Col4 INT,
    Col5 INT
    )
    
    DECLARE @tbl_Median TypeMedian
    
    -- For first column insert
    
    INSERT INTO @tbl_Median
    SELECT ListingCol1
    FROM Listing
    	
    INSERT INTO RESULT(Col1)
    Values(dbo.fn_GetMedian(@tbl_Median))
    
    -- For second column
    DELETE FROM @tbl_Median
    
    INSERT INTO @tbl_Median
    SELECT ListingCol2
    FROM Listing
    
    UPDATE RESULT
    SET Col2 = dbo.fn_GetMedian(@tbl_Median); --And this update I repeating for remaining columns