2017-02-02 42 views
0

我有两个表HOUR包含3个部分(A0001,B0001,C0001)和不同TYPE(A,B,C)的小时,PART包含3个部分的EAU(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

连接两个表和汇总如下:

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

非常感谢cloudsafe – user7226