你的位置:首页 > 数据库

[数据库]FOR XML PATH实现小九九

数据库环境:SQL SERVER2008R2

今天我们用SQL实现一下九九乘法表的功能。

实现的逻辑不是很复杂,难点在于怎么把想要的内容从同一列里头拼接到同一行上。

在这里,我们用到了FOR

/*数据准备,生成自然数1-9*/WITH  x0     AS ( SELECT  id        FROM   t100        WHERE  id <= 9       ),/*生成所有可能的乘法组合*/    x1     AS ( SELECT  a.id AS aid ,            b.id AS bid ,            CONVERT(VARCHAR(1), a.id) + ' * '            + CONVERT(VARCHAR(1), b.id) + ' = '            + CONVERT(VARCHAR(2), a.id * b.id) AS result        FROM   x0 a ,            x0 b        WHERE  a.id <= b.id       )  /*把被乘数相同的转到同一行上*/  SELECT result  FROM  ( SELECT  bid ,            ( SELECT  ' ' + result AS [text()]             FROM   x1 AS t2             WHERE   t2.bid = t1.bid            FOR             '')            ) AS result       FROM   x1 AS t1       GROUP BY bid      ) t;  

相关的说明已经在代码里进行注释。最后,附上结果图。


(本文完)