WITH t AS ( SELECT '2000152001' chitemseq, '326' chitem1, '284' chitem2, '203' chitem3 UNION ALL SELECT '2000152002', '40', '70', '20' UNION ALL SELECT '2000152003', '5.39E+07', '1.85E+08', '1.17E+08' UNION ALL SELECT '2000152003', '4.00E+05', '8.01E+05', '4.82E+05' UNION ALL SELECT '2000152003', '6.95E+05', '8.01E+05', '4.82E+05' ) SELECT chitemseq , chitem1, chitem2, chitem3 , x , CASE chitemseq WHEN '2000152001' THEN CAST(CAST(x AS NUMERIC(12, 1)) AS VARCHAR) WHEN '2000152002' THEN CAST(CAST(x AS NUMERIC(12, 0)) AS VARCHAR) WHEN '2000152003' THEN REPLACE(ROUND(x, -5), 'e+0', 'E+') END z FROM (SELECT chitemseq , chitem1, chitem2, chitem3 , ( CAST(chitem1 AS FLOAT) + CAST(chitem2 AS FLOAT) + CAST(chitem3 AS FLOAT) ) / 3 AS x FROM t ) a ;
WITH t AS ( SELECT '2000152001' chitemseq, '326' chitem1, '284' chitem2, '203' chitem3 UNION ALL SELECT '2000152002', '40', '70', '20' UNION ALL SELECT '2000152003', '5.39E+07', '1.85E+08', '1.17E+08' UNION ALL SELECT '2000152003', '4.00E+06', '8.01E+05', '4.82E+05' UNION ALL SELECT '2000152003', '6.95E+05', '8.01E+05', '4.82E+05' ) SELECT chitemseq , chitem1, chitem2, chitem3 , x , y , CASE chitemseq WHEN '2000152001' THEN CAST(CAST(x AS NUMERIC(12, 1)) AS VARCHAR) WHEN '2000152002' THEN CAST(CAST(x AS NUMERIC(12, 0)) AS VARCHAR) WHEN '2000152003' THEN CONCAT( CAST(x / POWER(10, y) AS NUMERIC(3,2)) , 'E+' , RIGHT(CONCAT('0', y), 2) ) END z FROM (SELECT chitemseq , chitem1, chitem2, chitem3 , ( CAST(chitem1 AS FLOAT) + CAST(chitem2 AS FLOAT) + CAST(chitem3 AS FLOAT) ) / 3 AS x , FLOOR(LOG10( ( CAST(chitem1 AS FLOAT) + CAST(chitem2 AS FLOAT) + CAST(chitem3 AS FLOAT) ) / 3)) AS y FROM t ) a ;