How truncates a number and another number different online?

Here's an example where I take a percent of a number.

< code >
SELECT 40*.5 AONE, 'A' aname
OF THE DOUBLE
UNION ALL
SELECT 121*.5 AONE, aname 'B '.
OF THE DOUBLE
UNION ALL
SELECT 121*.5 AONE, aname 'C '.
OF THE DOUBLE
UNION ALL
SELECT 80*.5 AONE, 'd' aname
OF THE DOUBLE
< code >

It gives me

20A
60.5 B OF
60.5 C
50%

I want a single number TRUNC and ROUND another number where the number has a
"0.5" so I will

20A
61B
60 C
50%

I'm having more than 4 files, just trying to keep things simple.

Suggestions?

TIA
Steve42

Published by: Steve42 on December 5, 2011 13:44

I missed you only want to truncate/round where the fractional part of value is. 5:

WITH SAMPLE_TABLE AS (
                      SELECT 40*.5 AONE, 'A' aname FROM DUAL UNION ALL
                      SELECT 121*.5 AONE, 'B' aname FROM DUAL UNION ALL
                      SELECT 121*.5 AONE, 'C' aname FROM DUAL UNION ALL
                      SELECT 80*.5 AONE, 'D' aname FROM DUAL
                     )
SELECT  CASE MOD(ABS(AONE),1)
          WHEN .5 THEN
                    CASE MOD(ROW_NUMBER() OVER(ORDER BY CASE MOD(ABS(AONE),1) WHEN .5 THEN ANAME END NULLS LAST),2)
                      WHEN 1 THEN TRUNC(AONE)
                      WHEN 0 THEN ROUND(AONE)
                    END
          ELSE AONE
        END AONE,
        ANAME
  FROM  SAMPLE_TABLE
  ORDER BY ANAME,
           ROW_NUMBER() OVER(ORDER BY CASE MOD(ABS(AONE),1) WHEN .5 THEN ANAME END NULLS LAST)
/

      AONE A
---------- -
        20 A
        60 B
        61 C
        40 D

SQL> 

SY.

Published by: Solomon Yakobson on December 5, 2011 17:05

Tags: Database

Similar Questions

Maybe you are looking for