SELECT MAX(DECODE(N2, 1, NN)) NN1,
MAX(DECODE(N2, 2, NN)) NN2,
MAX(DECODE(N2, 3, NN)) NN3,
MAX(DECODE(N2, 4, NN)) NN4,
MAX(DECODE(N2, 5, NN)) NN5,
MAX(DECODE(N2, 6, NN)) NN6,
MAX(DECODE(N2, 7, NN)) NN7,
MAX(DECODE(N2, 8, NN)) NN8,
MAX(DECODE(N2, 9, NN)) NN9
FROM (SELECT T1.N N1,
T2.N N2,
T1.N * T2.N,
T1.N || '*' || T2.N || '=' || T1.N * T2.N NN
FROM (SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 9) T1,
(SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 9) T2
WHERE T1.N <= T2.N)
GROUP BY N1
ORDER BY N1 DESC;
第二种写法:
SELECT '1*' ||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG)"1",
CASE WHEN FLAG>1 THEN '2*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*2) ELSE '' END "2",
CASE WHEN FLAG>2 THEN '3*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*3) ELSE '' END "3"
CASE WHEN FLAG>3 THEN '4*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*4) ELSE '' END "4",
CASE WHEN FLAG>4 THEN '5*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*5) ELSE '' END "5",
CASE WHEN FLAG>5 THEN '6*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*6)ELSE '' END "6",
CASE WHEN FLAG>6 THEN '7*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*7) ELSE '' END "7",
CASE WHEN FLAG>7 THEN '8*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*8) ELSE '' END "8",
CASE WHEN FLAG>8 THEN '9*'||TO_CHAR(FLAG)||'='||TO_CHAR(FLAG*9) ELSE '' END "9"
FROM (
SELECT 1 FLAG FROM DUAL
UNION ALL
SELECT 2 FROM DUAL
UNION ALL
SELECT 3 FROM DUAL
UNION ALL
SELECT 4 FROM DUAL
UNION ALL
SELECT 5 FROM DUAL
UNION ALL
SELECT 6 FROM DUAL
UNION ALL
SELECT 7 FROM DUAL
UNION ALL
SELECT 8 FROM DUAL
UNION ALL
SELECT 9 FROM DUAL) A