2015-05-23 3 views
0

У меня есть Table1 с группой мудрой ProductsOrderУмножение две таблицы

Group, ProductA_Order, ProductB_Order ... Product n 

У меня есть Table2 с продуктом мудрой VaryingLeadTimeComponents

Product,HighLeadTimeComponent,LowLeadTimeComponent ... 

Я хочу, чтобы запрос SQL, который обеспечит мне Групповые результаты, приведенные ниже,

Group, HighLeadTimeComponent,LowLeadTimeComponent ... 

Результат вычисляется, как показано ниже,

For each Group, TotalHighLeadComponent = (Table1.ProductA_Order * Table2.HighLeadTimeComponent)+(Table1.ProductB_Order * .HighLeadTimeComponent)+..+(Table1.ProductN_Order* Table2.HighLeadTimeComponent) 

Это должно быть сделано итерационно. Если существует гибкость для получения динамических имен столбцов, это будет полезно.

Пожалуйста, предложите поделиться, если у вас есть фрагмент кода SQL.

+0

Во-первых, вы должны решить, какую базу данных вы используете. Я удаляю теги, специфичные для базы данных, и заменяю их только sql. Добавьте тег базы данных, которую вы действительно используете. –

+0

Я использую SQL Server 2008 – Prasankun23

+3

Я также предлагаю вам отредактировать свой вопрос с образцами данных и желаемыми результатами. Настройка SQL Fiddle также хороша. –

ответ

0

Если вы хотите это:

Rating1 = (Table1.ProductA * Table2.Rating1)+(Table1.ProductB * Table2.Rating1)+..+(Table1.ProductN* Table2.Rating1) 

Так что вам нужно просто:

Rating1 = Table2.Rating1 * (Table1.ProductA + Table1.ProductB +..+ Table1.ProductN) 

Так что используйте этот простой запрос:

SELECT Table2.Rating * (SELECT SUM(Table1.Product) FROM Table1) 
FROM Table2 

За то, что матричное умножение с SQL использует это:

SELECT SUM(t1.Product * t2.Rating) AS MatrixMultiply 
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Product) As i 
     FROM Table1) t1 
    JOIN 
    (SELECT *, ROW_NUMBER() OVER (ORDER BY Rating) As i 
     FROM Table2) t2 
    ON t1.i = t2.i 
Смежные вопросы