2010-08-17 7 views
0

Essayer de générer une matrice de multiplication Triangular T-SQL- Comme une matrice de multiplication triangulaire ressemblera à ceci:Triangular Multiplication génération Matrice

 
0 
0 1 
0 2 4 
0 3 6 9 
0 4 8 12 16 

Je n'ai pas été en mesure de trouver une solution efficace pour cela. Toute aide est appréciée.

+2

S'IL VOUS PLAÎT, ARRÊTEZ DE CRIER. –

+0

Est-ce que cela doit être fait spécifiquement dans SQL, ou d'autres options seraient-elles disponibles? – AllenG

+1

SON QUESTION COBOL! –

Répondre

4

Il y a une façon intelligente de le faire avec XML (SQL 2005 et versions ultérieures): (. Une table Nums permanente est une bonne idée)

with Nums(n) as (
    select 0 union all 
    select 1 union all 
    select 2 union all 
    select 3 union all 
    select 4 union all 
    select 5 union all 
    select 6 union all 
    select 7 -- resize as needed or make it permanent 
) 
    select x as Prod from Nums 
    cross apply (
    select Cast(Nums.n*(N2.n) as varchar(80))+space(3-Len(Nums.n*N2.n)) 
    -- expand the varchar size if needed 
    as [text()] 
    from Nums as N2 
    where Nums.n >= n 
    order by N2.n 
    for xml path('') 
) as X(x) 
    where n <= 4 -- Adjust as needed 
    order by n; 

La sortie est la suivante:

Prod 
-------- 
0 
0 1 
0 2 4 
0 3 6 9 
0 4 8 12 16