SqlServer 99乘法表

CREATE TABLE #TEMP
(
    X INT,
    Y INT
)
DECLARE @X INT SET @X = 1
DECLARE @Y INT SET @Y = 1
DECLARE @MAX INT SET @MAX = 100

WHILE(@X <= @MAX)
BEGIN
    WHILE(@Y <= @MAX)
    BEGIN
        INSERT INTO #TEMP (X,Y)
        SELECT @X,@Y
        SET @Y = @Y + 1
    END
    SET @Y = 1 
    SET @X = @X + 1 
END

SELECT X,Y,CONVERT(VARCHAR,X) + ' * ' + CONVERT(VARCHAR,Y) + ' = ' + CONVERT(VARCHAR,X*Y ) XY INTO #TEMP1 FROM #TEMP

DECLARE @SqlSubject NVARCHAR(4000)
SELECT @SqlSubject= STUFF((SELECT ','+'['+ CONVERT(VARCHAR,X) +']' FROM (SELECT DISTINCT X FROM #TEMP1) T ORDER BY X  FOR XML PATH('')),1,1,'') -- 获取PIVOT科目
DECLARE @SqlPIVOT NVARCHAR(4000)='SELECT * FROM #TEMP1 PIVOT(MAX(XY) FOR X IN('+@SqlSubject+')) T' -- 拼接PIVOT
PRINT @SqlPIVOT
EXEC (@SqlPIVOT)

DROP TABLE #TEMP
DROP TABLE #TEMP1

 

 

 

posted @ 2020-10-16 10:44  玫瑰ζั͡ޓއއ祈祷  阅读(89)  评论(0)    收藏  举报