0

ich unter Abfrage, die ich mit employeeId von verschiedenen Bedingungen mit rund 33 Aufzeichnungen Mitarbeiter seit gestern bin versucht:Abfragen von SQL Server Summe mit CTE zu erhalten und schließt sich

With CTE 
(
    select EmployeeId, and other colums with joins and conditions. 
) 

Jetzt möchte ich dies beitreten Abfrage, um die Summe der Rechnungen jedes Mitarbeiters aus den Tabellen unten, table1 und table2 zu erhalten.

table1 hat employeeid so wie mein CTE employeeid habe ich es mit tabelle1 beitreten können

With CTE 
(
    select EmployeeId, and other colums with joins and conditions. 
) 
select *, table1.invoiceId 
from CTE 
left join table1 on table1.employeeid = CTE.employeeId 
left join table2 on table2.invoiceid = table1.invoiceid 
groupby 

Aber meine tabelle1 nur Rechnungen haben und für jede dieser Rechnung gibt es Menge in anderen Tabelle d.h table2 verbringen. Tabelle2 hat die Spalte "Betrag", die ich abhängig von der Rechnungsnummer zusammenfassen muss.

Für mehr Klarheit schreibe ich die Tabellenstruktur oder Ausgabe wie folgt. Ich bin wie oben versuchen, aber sie sind nicht korrekte Ergebnisse

zeigt Angenommen CTE

Emplyeeid empName Empaddress empcode 
1   john America 121 
2   sandy America 122 

Jetzt hat tabelle1 hat

InvoiceId EmployeeId RecordId PAyeeid 
1   1   223  202 
2   1   222  212 
3   1   121  378 
4   2   229  987 
5   2   345  333 

table2 hat den coulmm Betrag, den wir für jede Rechnung von epmloyee brauchen

jetzt table2

sollte die Ausgabe wie pro employe John hat zwei Rechnungen in table1 dh mit Id 1 und 2 und 1 und 2 invoiceds gibt es Beträge, die

Emplyeeid empName Empaddress empcode Amount 
1   john America 121  80 

Antwort

3
With CTE 
    (
    select EmployeeId, and other colums with joins and conditions. 
    ) 

    With CTE1 
    (
    select EmployeeId,table1.invoiceid 
    from cte 
    left join table1 on table1.employeeid=CTE.employeeId 
    ) 

    select sum(amount), cte1.employeeId from CTE1 
    left join table2 on table2.invoiceid = cte1.invoiceid 
    group by cte1.employeeId 

aufaddieren sein müssen, aber Sie können die Tabelle1 in der ersten Cte selbst beitreten. Es gibt keine Notwendigkeit, für die zweite cte zu gehen, wenn die erste cte einfach ist.