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