Data and SQL
CREATE TABLE #data
(
YEAR INT ,
JAN decimal(5,2) NUll,
FEB decimal(5,2) NUll,
MAR decimal(5,2) NUll,
APR decimal(5,2) NUll ,
MAY decimal(5,2) NUll,
JUNE decimal(5,2) NUll ,
JULY decimal(5,2) NUll ,
AUG decimal(5,2) NUll,
SEPT decimal(5,2) NUll,
OCT decimal(5,2) NUll ,
NOV decimal(5,2) NUll,
DEC DECIMAL(5,2) NUll
)
GO
INSERT INTO #data SELECT 2018,49.7,45.8,54 ,58.6,70.8,71.9 ,82.8,79.1 , NULL,NULL,NULL,NULL
INSERT INTO #data SELECT 2017,43.7,46.6,51.6,57.3,67 ,72.1,78.3,81.5 , 73.8,61.1,51.3,45.6
INSERT INTO #data SELECT 2016,49.1,53.6,56.4,65.9,68.8,73.1 ,76 ,79.5,69.6 ,60.6,56 ,41.9
INSERT INTO #data SELECT 2015,50.3,54.5,57.9,59.9,68 ,78.9,82.6,79 , 68.5,63.6,49.4,47.1
SELECT 'data',* FROM #data
GO
; WITH cte AS
(
SELECT year , JAN AS Value , 'JAN' AS month from #data
UNION ALL
SELECT year , FEB AS Value , 'FEB' from #data
UNION ALL
SELECT year , MAR AS Value , 'MAR' from #data
UNION ALL
SELECT year , APR AS Value , 'APR' from #data
UNION ALL
SELECT year , MAY AS Value , 'MAY' from #data
UNION ALL
SELECT year , JUNE AS Value , 'JUNE' from #data
UNION ALL
SELECT year , JULY AS Value , 'JULY' from #data
UNION ALL
SELECT year , AUG AS Value , 'AUG' from #data
UNION ALL
SELECT year , SEPT AS Value , 'SEPT' from #data
UNION ALL
SELECT year , OCT AS Value , 'OCT' from #data
UNION ALL
SELECT year , NOV AS Value , 'NOV' from #data
UNION ALL
SELECT year , DEC AS Value , 'DEC' from #data
), cte_rn AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY year ORDER BY ISNULL(value,0) ) AS rn, year,value,month FROM cte
WHERE value IS NOT NULL
)
SELECT 'SQL Output',* FROM cte_rn WHERE rn =1
DROP TABLE #data