В SQL, как я могу умножить результаты, полученные в строках, на результаты, полученные в колонках - PullRequest
0 голосов
/ 06 ноября 2010

Существуют ли режим или метод для получения этого результата? пожалуйста, покажите мое изображение в посте alt text Я хочу, чтобы мой результат представлял собой произведение чисел в вертикальной (черная линия) на число горизонтальный (красная линия)

Ответы [ 2 ]

1 голос
/ 06 ноября 2010

Если вы нормализуете свои данные, извлекая пронумерованные столбцы в таблицу, такую ​​как

Matrix
Name  Value
Tda1    94.5
Tda2    21.1
Tda3    53.4
Tda4    21.1

И предполагая, что исходная таблица имеет имя table, со значением tda столбцов в столбце с именем nameи значение для умножения на именованное выражение (извините, я не могу прочитать имена ваших столбцов)

Тогда вы можете

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

Если вы не можете изменить структуру, тогда в стандартном SQL (IMHO) вы будетенужно сделать case

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

Примечания:

  • вы можете захотеть иметь ELSE NULL (или пропустить другое).
  • некоторые базы данных имеют расширения стандарта, которыепозволит вам иметь динамические столбцы в строках

РЕДАКТИРОВАТЬ: Конечно, и рискуя привести к слишком очевидным, в конце вы можете сделать СУММУ вышеупомянутого запроса.

1 голос
/ 06 ноября 2010

Пожалуйста, попробуйте это:

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