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?
