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 ) Now I have a `table` `Listing` with filled values in it as and a `table` `RESULT` to be filled according to `table` `Listing`: `Tables structure` as LISTING(ListingCol1,ListingCol2,ListingCol3,ListingCol4,ListingCol5) RESULT(Col1,Col2,Col3,Col4,Col5) Listing table has more that 1000 rows of data. All `column` from both `tables` are of type `int`. Now I want to fill `columns` of `RESULT table` and that `column` could be calculate as: Col1 = SUM(ListingCol1) Col2 = SUM(ListingCol2) Col3 = dbo.fn_GetMedian(ListingCol3) Col4 = dbo.fn_GetMedian(ListingCol4) Col5 = dbo.fn_GetMedain(ListingCol5) And I'm doing so as: INSERT INTO RESULT(Col1) SELECT SUM(ListingCol1) Update RESULT SET Col2 = SUM(ListingCol2) DECLARE @tbl_Median TypeMedian INSERT INTO @tbl_Median SELECT ListingCol3 FROM Listing UPDATE RESULT SET Col3 = dbo.fn_GetMedian(@tbl_Median) -- For next column DELETE FROM @tbl_Median INSERT INTO @tbl_Median SELECT ListingCol4 FROM Listing UPDATE RESULT SET Col4 = dbo.fn_GetMedian(@tbl_Median); --And this update query I repeating for remaining columns. How could I do that in single query?