我試圖在Microsoft SQL Server 2012中用T-SQL生成乘法表,並且在寬度大於高度的情況下卡住了。只要它不成立,一切都會順利,但任何時候高度都會更大,所有指數大於最後一個高度值的單元格都是NULL ...爲什麼這樣以及如何才能克服這個問題?使用T-SQL生成乘法表
它只是生成值方陣了,從我的理解高度,但我真的不知道如何解決它......
DECLARE @InitialValue int, @Height int, @Width int, @ColumnNames varchar(max), @RowNames varchar(max), @sql varchar(max);
SET @InitialValue = 2;
SET @Height = 2
SET @Width = 5
SELECT
@RowNames = COALESCE(@RowNames + ', ', '')
+ '[' + CAST(@InitialValue + number AS varchar) + ']'
FROM master..spt_values
WHERE type = 'P'
AND number BETWEEN 0 AND @Height-2;
SELECT
@ColumnNames = COALESCE(@ColumnNames + ', ', '')
+ '[' + CAST(@InitialValue + number AS varchar) + ']'
FROM master..spt_values
WHERE type = 'P'
AND number BETWEEN 0 AND @Width-2;
SET @sql =
'WITH numbers AS (
SELECT ' + CAST(@InitialValue AS varchar) + ' + number AS X
FROM master..spt_values
WHERE type = ''P''
AND number BETWEEN 0 AND ' + CAST(@Height-2 AS varchar) +'
),
products AS (
SELECT
n1.X,
PivotN = n2.X,
P = n1.X * n2.X
FROM numbers n1
CROSS JOIN numbers n2
)
SELECT
X, ' + @ColumnNames + '
FROM products
PIVOT (MAX(P) FOR PivotN IN (' + @ColumnNames + ')) p';
EXEC(@sql);
OUT:
X 2 3 4 5
2 4 NULL NULL NULL
你想要的結果是什麼?向我們展示矩陣的高度3和寬度5例如 –
在TSQL中創建逗號分隔的字符串做一些研究。你在做什麼是相當可疑的。提示:使用適當的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。 – HABO