2017-02-02 2 views
0

У меня есть две таблицы HOUR содержит час для 3-х частей (A0001, B0001, C0001) с разными ТИПАМИ (A, B, C) и ЧАСТЬ содержит EAU из 3-х частей (A0001 , B0001, C0001) от KeyId-29395:Как сделать запрос (SumProduct) из двух таблиц

enter image description here

Я хотел бы иметь общий час для 3-х различных типов, когда KeyId = 29395 выбирается с помощью SUMPRODUCT

TYPEA_TOTAL_HOUR = 1*100 + 4*200 + 7*300 
TYPEB_TOTAL_HOUR = 2*100 + 5*200 + 8*300 
TYPEC_TOTAL_HOUR = 3*100 + 6*200 + 9*300 

enter image description here

Как я могу достичь этого с помощью SQL Server 2012?

ответ

0

JOIN двух таблиц и агрегировать так:

select 
    a.keyid, 
    sum(a.typea * b.eau) typea_total_hour, 
    sum(a.typeb * b.eau) typeb_total_hour, 
    sum(a.typec * b.eau) typec_total_hour 
from hour a 
join part b 
on a.partid = b.partid 
and a.keyid = b.keyid 
group by a.keyid; 
+0

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

1
CREATE TABLE HOUR (KEYID INT, PARTID CHAR(5), TYPEA INT, TYPEB INT, TYPEC INT) 

INSERT HOUR VALUES (29395, 'A0001', 1, 2, 3), (29395, 'B0001', 4, 5, 6), (29395, 'C0001', 7, 8, 9) 

CREATE TABLE PART (KEYID INT, PARTID CHAR(5), EAU INT) 

INSERT PART VALUES (29395, 'A0001', 100), (29395, 'B0001', 200), (29395, 'C0001', 300) 

SELECT H.KEYID, SUM(TYPEA*EAU) AS TYPEA, SUM(TYPEB*EAU) AS TYPEB, SUM(TYPEC*EAU) AS TYPEC 
FROM HOUR H 
INNER JOIN PART P ON H.KEYID=P.KEYID AND H.PARTID=P.PARTID 
GROUP BY H.KEYID 
+0

Большое спасибо skyafe – user7226