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?