2017-02-02 6 views
0

Ich habe zwei Tabellen HOUR enthält die Stunde für 3 Teile (A0001, B0001, C0001) mit verschiedenen TYPE (A, B, C) und PART enthält die EAU von 3 Teilen (A0001 , B0001, C0001) von KEYID-29395:Abfrage (SumProduct) von zwei Tabellen

enter image description here

würde Ich mag die Gesamt Stunde für den 3 verschiedenen Typen haben, wenn KEYID = 29395, ausgewählt wird, um das 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 Verwendung

Wie kann ich dies mit SQL Server 2012 erreichen?

Antwort

0

JOIN die beiden Tabellen und aggregieren wie folgt aus:

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

Sie danken sehr viel - das mir sehr viel helfen, wie viele meiner Berechnungen dies ähnlich sind. Ich lade oft einfach alles nach Excel und benutze Excel-Funktionen, um die Mathematik zu machen. – 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

Vielen Dank cloudsafe – user7226