2010-11-05 12 views
0

Existe-t-il un mode ou une méthode pour obtenir ce résultat? s'il vous plaît sembler mon image dans le post alt text Je veux que mon résultat est un produit de nombres à la verticale (ligne noire) multiplié par le nombre horizontal (ligne rouge)En SQL comment je peux multiplier les résultats obtenus dans les lignes en résultats obtenus dans les colonnes

+0

Juste pour essayer de comprendre, vous voulez prendre 66.28 et le multiplier par 84.5 et 21.1 et 63.4? Pourriez-vous donner un exemple de résultat basé sur les données de votre image? – NotMe

+0

Les colonnes appelées Foo1, Foo2, Foo3, etc. sont généralement une indication d'un mauvais design. –

+0

66.28x84.5, 58.76x21.1 .... dans cet ordre – elgianka

Répondre

1

S'il vous plaît essayez ceci:

select cast(exp(sum(log(ExpPeso))) as float) as myresult1, (tda1*tda2*tda3*tda4) as reslutset2 
from TableName 
1

Si vous serait normalize vos données en extrayant les colonnes numérotées dans une table telle que

Matrix 
Name Value 
Tda1 94.5 
Tda2 21.1 
Tda3 53.4 
Tda4 21.1 

et en supposant que la table originale est nommée table, avec des colonnes de valeur tda dans la colonne appelée nom et la valeur de se multiplier avec l'expression du nom (désolé ne peut pas lire vos noms de colonnes)

Ensuite, vous pouvez

SELECT matrix.value * table.expression 
FROM matrix m INNER JOIN table t 
    ON m.name = t.tda_value 

Si vous ne pouvez pas modifier la structure puis en SQL standard (à mon humble avis), vous devrez faire le cas

SELECT 
     CASE t.tda_value 
      WHEN "Tda1" THEN Tda1 
      WHEN "Tda2" THEN Tda2 
      WHEN "Tda3" THEN Tda3 
      WHEN "Tda4" THEN Tda4 
      ELSE 0 
     END * t.expression 
FROM table 

notes:

  • vous pouvez avoir NULL ELSE (ou sauter d'autre).
  • certaines bases de données ont des extensions à la norme qui vous permettent d'avoir des colonnes dynamiques aux lignes

EDIT: Bien sûr et au risque d'énoncer trop évident, à la fin vous pouvez faire une somme de ce qui précède question.