我將 Microsoft Access 與一個簡單的資料庫一起使用,該資料庫匯總了可計費客戶的員工小時數。我創建了一個查詢來求和每個員工的計費小時總數。我還需要它以零和回傳工人。我無法弄清楚如何在同一查詢中正確執行此操作。
我是一名會計師,大概有六年沒有寫過 SQL,而且從來沒有特別精通過。我認為對于更有經驗的人來說,這應該是一個相當簡單的解決方法。我的 SQL 代碼正是我在設計視圖中構建查詢時由 Access 生成的代碼。代碼是:
SELECT [EYH Export].Worker, Sum([EYH Export].Hours) AS [Billed Hours]
FROM [EYH Export] INNER JOIN [Job List] ON [EYH Export].Client = [Job List].Client
WHERE ((([Job List].Billed)="Billed"))
GROUP BY [EYH Export].Worker;
它回傳一個工人串列,第一列是他們的名字,第二列是總計費小時數。為了包括沒有計費時間的名稱,我相信我應該使用類似的東西: COUNT ([EYH Export].Worker WHERE ([EYH Export].Client) IS NULL;
我真的非常感謝任何建議。只是指出我正確的方向將是一個巨大的祝福。
謝謝你。
uj5u.com熱心網友回復:
由于您Job List僅將用作過濾器( WHERE ((([Job List].Billed)="Billed"))),而不是在 中SELECT,因此這可能對您有用...
(將過濾器從WHERE子句移到里面SUM()意味著您不排除任何行,因此不要排除沒有計費的作業人員。)
SELECT
[EYH Export].Worker,
SUM(CASE WHEN (([Job List].Billed)="Billed") THEN [EYH Export].Hours ELSE 0 END) AS [Billed Hours]
FROM
[EYH Export]
INNER JOIN
[Job List]
ON [EYH Export].Client = [Job List].Client
GROUP BY
[EYH Export].Worker;
如果并非所有客戶端在 中都有相應的行Jobs List,請將連接更改為LEFT JOIN...
SELECT
[EYH Export].Worker,
SUM(CASE WHEN (([Job List].Billed)="Billed") THEN [EYH Export].Hours ELSE 0 END) AS [Billed Hours]
FROM
[EYH Export]
LEFT JOIN
[Job List]
ON [EYH Export].Client = [Job List].Client
GROUP BY
[EYH Export].Worker;
uj5u.com熱心網友回復:
我將嘗試回答您的基本要求。您基本上不想要解決方案,而是想要遵循、改進的路徑,我假設:
我真的非常感謝任何建議。只是指出我正確的方向將是一個巨大的祝福
因此,首先,您可能希望按照 Brad 的建議更改連接,因為當前(扣除)一個表包含所有客戶端,而一個不包含。通過這樣做,您甚至可以獲得丟失的客戶端,但會知道誰丟失了,這將我們帶到下一點,即iif(也請考慮nz)。你把它放在一列。您將測驗空值,如果它是空值,則將 0 相加。
這就是路徑。對于實際代碼,我很樂意將我的答案交給執行此操作的人。
祝你好運!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/317178.html
上一篇:使用WebBroswerControl從URL縮放影像
下一篇:SSL握手顯示密碼0000
