【PL/SQL】九九乘法口诀表

时间:2022-06-24 19:38:17
-- 九九乘法表
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