我有一个以下的查询,我从昨天开始尝试使用employeeId和各种条件的员工的33条记录:
With CTE
(
select EmployeeId, and other colums with joins and conditions.
)
现在我想加入这个查询,从下面的表table1和table2中获取每个员工的发票总和。
table1
已employeeid
,因此我的CTE已employeeid
我可以将其加入table1
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
但我的table1只有发票,而且每张这样的发票都有其他表中的金额,即table2。 table2有列"金额"我需要总结一下取决于invoiceid。
为了更清楚,我正在编写表结构或输出如下。 我正在尝试上面但他们没有显示正确的结果
假设CTE
Emplyeeid empName Empaddress empcode
1 john America 121
2 sandy America 122
现在table1有
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具有epmloyee每张发票所需的库存量
现在是table2
InvLine Invoiceid Amount
1 1 30
2 1 30
3 1 20
4 2 10
5 2 10
6 2 10
输出应该按照员工约翰在表1中有两张发票,即Id 1和2,而1和2的发票则需要加起来
Emplyeeid empName Empaddress empcode Amount
1 john America 121 80
答案 0 :(得分: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
但你可以在第一个cte本身加入table1。如果第一个cte很简单,就没有必要去第二个cte。