假設我有一張表,其中包含按行和6列的發票行,其中員工ID可以標記爲該發票。員工ID不能連續複製,但不同列的不同發票行可以存在相同的員工ID。在下面的表中,REP 1應具有我希望能夠總結由僱員ID的總量的500根據多列中存在的ID總結髮票金額
總量(REP 1,REP 2,等等。)。我可以通過一個大型的聯合查詢來做到這一點,但問題是我有一個我需要總結的大約450個員工ID的列表。有沒有辦法讓我有一個查詢吐出一張員工ID和他們的總金額列表?
假設我有一張表,其中包含按行和6列的發票行,其中員工ID可以標記爲該發票。員工ID不能連續複製,但不同列的不同發票行可以存在相同的員工ID。在下面的表中,REP 1應具有我希望能夠總結由僱員ID的總量的500根據多列中存在的ID總結髮票金額
總量(REP 1,REP 2,等等。)。我可以通過一個大型的聯合查詢來做到這一點,但問題是我有一個我需要總結的大約450個員工ID的列表。有沒有辦法讓我有一個查詢吐出一張員工ID和他們的總金額列表?
連接表是一種方式......
select e.employee_id,
sum(i.amount)
from invoice i,
join employee e on (e.employee_id in (i.slot1, i.slot2, i.slot3, i.slot4, i.slot5, i.slot6))
group by e.employee_id;
的另一種方式......
select employee_id,
sum(amount)
from (
select slot1 employee_id, sum(amount) amount from invoice group by slot1 union
select slot2, sum(amount) from invoice group by slot2 union all
select slot3, sum(amount) from invoice group by slot3 union all
select slot4, sum(amount) from invoice group by slot4 union all
select slot5, sum(amount) from invoice group by slot5 union all
select slot6, sum(amount) from invoice group by slot6
) as q1
group by employee_id;
根據有關證據(2個標籤對1),我刪除了MySQL的標籤。如果你的問題不是關於SQL Server的,請適當標記。 –
首先讓我們來澄清你使用的產品:MySQL或MS SQL服務器。另外,是否可以對數據結構進行非規範化處理,並在記錄中插入時隙,而不是列中。 – Shadow
我的歉意,我更新了標籤。版本是Microsoft SQL Server。 – raidboss