説明されているテーブル構造は、参考用です。列名は、DB の列名とは異なります。
私はかなり変わったDBを持っています。次の構造のエージェント テーブル ( Agents ) があります。
A_ID(PK)| AgentName | Team
------------------------------------
1 | Abi | New
2 | Carl | New
3 | James | New
いくつかのフィールドを持つ他の2つのテーブルがありますが、問題のテーブルには次のようなフィールドがあります..
表:取引
ID(PK) | manyColumns | Agent_ID | OUTCOME
--------------------------------------------------------
96 | ... | 1 | 9
98 | .... | 2 | 8
99 | ..... | 3 | 1
表: RAWDATA
ID(PK) | manyColumns | Agent_ID | BANK_OUTCOME
-------------------------------------------------------------
1234 | ... | 1 | 3
1114 | .... | 2 | 333
1745 | ..... | 3 | 123
スタッフの勤務時間の詳細を含むログテーブルがあります..
表: AGENT_ATTENDANCE
ATT_ID | Hours Worked | Agent_ID_FK
-------------------------------------------
96 | 7.5 | 1
98 | 7.5 | 2
99 | 7.5 | 3
スタッフの給与、契約時間の詳細もあります。
表: AGENT_DETAILS
DT_ID | Hours WK | Pay | Agent_ID_FK
-------------------------------------------------------
96 | 37.5 | 15600 | 1
98 | 37.5 | 15600 | 2
99 | 37.5 | 15600 | 3
別のクエリを作成しましたが、1 つとして表示したい..計算が相互に依存するため..方法がわかりません..以下は別のクエリです..どうすればそれらを 1 つに結合できますか??
クエリ - 1:
PARAMETERS [EnterStartDate:] DateTime, [EnterEndDate:] DateTime;
SELECT Agents.[Agent Name],
Sum(IIf((([TRANSACTIONS].[BankOutcome]=3) Or ([TRANSACTIONS].[BankOutcome]=333)),1,0)) AS PositiveOutcome,
Count(RAWDATA.Outcome) AS TotalRecordsUsed
FROM (RAWDATA LEFT JOIN Agents ON RAWDATA.[AGENT_ID] = Agents.A_ID) LEFT JOIN
TRANSACTIONS ON RAWDATA.ID = TRANSACTIONS.RAW_ID
WHERE (((RAWDATA.DialedDate) Between [EnterStartDate:] And [EnterEndDate:]))
GROUP BY Agents.[Agent Name], RAWDATA.AGENT_ID
HAVING (((RAWDATA.AGENT_ID) Is Not Null));
クエリ - 2:
PARAMETERS [EnterStartDate:] DateTime, [EnterEndDate:] DateTime;
SELECT Agents.[Agent Name], AGENT_DETAILS.WK_TARGET_HOURS,
Sum(AGENT_ATTENDENCE.HoursWorked_Day) AS [Actual Hours Worked],
[WK_TARGET_HOURS]-[Actual Hours Worked] AS [Hours Lost], AGENT_DETAILS.SALARY,
Round([SALARY]/252/([WK_TARGET_HOURS]/5),2) AS [Hourly Rate], [Hourly Rate]*[Actual Hours Worked] AS [Staff Cost]
FROM (Agents INNER JOIN AGENT_DETAILS ON Agents.A_ID = AGENT_DETAILS.AGENT_ID_fk)
INNER JOIN AGENT_ATTENDENCE ON Agents.A_ID = AGENT_ATTENDENCE.AGENT_ID_fk
WHERE (((AGENT_ATTENDENCE.WorK_Date) Between [EnterStartDate:] And [EnterEndDate:]))
GROUP BY Agents.[Agent Name], AGENT_DETAILS.WK_TARGET_HOURS, AGENT_DETAILS.SALARY,
Agents.Active, Agents.Team
HAVING (((Agents.Active)=True) AND ((Agents.Team)<>"Manager" And (Agents.Team)<>"Cust. Ser."));
できればファイルを添付できますが、方法がわかりません。