[英]SQL Server Query Formulation
我正在嘗試為我的數據庫編寫查詢,但遇到一些麻煩,無法將其到達需要的位置。
我需要它做的是:
除列出其他事項外,它還需要檢查一個HoursWorked表,找出哪些員工在4月工作並列出他們。 然后,它需要列出這些員工的工作小時數(COUNT個)
我將向您展示我整理的內容,這些內容還不完善,因為已經很晚了,而且我的想法已經用完了:
SELECT
(cl.CommonName + '(' + cl.LegalName + ')') AS ClientName,
p.ProjectName,
(e.LastName + ', ' + e.FirstName) AS EmpName,
SUM(wh.HoursWorked) AS Hours,
br.Rate,'$'+FORMAT((Rate * SUM(HoursWorked)), '#,0.00') TotalCharges,
(con.LastName + ', ' + con.FirstName + ' - ' + con.AddrLine1 + ' ' + con.AddrLine2) AS Contact
FROM
Clients cl,
Projects p,
Employees e,
WorkHours wh,
BillingRates br,
Contacts con,
Contracts cont
WHERE
cl.ClientID = cont.ClientID
AND cont.ContractID = p.ContractID
AND e.Level = br.Level
AND e.TitleID = br.TitleID
AND e.EmpId = wh.EmpId
AND EXISTS
( SELECT * FROM WorkHours
WHERE WH_Month = 4 )
GROUP BY
cl.CommonName,
cl.LegalName
ORDER BY
ClientName,
p.ProjectName,
EmpName
這是我的架構:
結果應包括:
嘗試換掉這個:
AND EXISTS
( SELECT * FROM WorkHours
WHERE WH_Month = 4 )
有了這個:
WHERE wh.WH_Month = 4
查詢中的內容為“如果表中有month = 4的任何記錄,請在結果中將此記錄提供給我,而不管它與哪個月份相關聯”。 沒有將“當前”結果與月份聯系在一起的信息,因此它將返回每個記錄。
編輯:我也支持用舊的逗號聯接替換當前方法,並且在您的模式中,我看不到很多外鍵關系或與您選擇的表相關的任何內容。例如,如何您知道給定項目/合同的客戶是什么? 值得深思。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.