數據庫環境:SQL SERVER2008R2
今天我們用SQL實現一下九九乘法表的功能。
實現的邏輯不是很復雜,難點在于怎么把想要的內容從同一列里頭拼接到同一行上。
在這里,我們用到了FOR XML PATH,FOR XML的用法,可以到MSDN去看,這里就不細講了。
/*數據準備,生成自然數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 XML PATH('') ) AS result FROM x1 AS t1 GROUP BY bid ) t;
相關的說明已經在代碼里進行注釋。最后,附上結果圖。
新聞熱點
疑難解答