簡體   English   中英

SQL Server查詢公式

[英]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

這是我的架構:

My Schema

結果應包括:

  • 客戶名稱
  • 合約名稱
  • 從當月第一天到當月最后一天登錄項目時間的員工
  • 每位員工本月記錄的總小時數
  • 員工率
  • 每位員工的總費用(即員工費率x員工工作時間)
  • 結算聯系人-每個合同的[名稱,地址]

嘗試換掉這個:

AND EXISTS 
( SELECT * FROM WorkHours
    WHERE WH_Month = 4 )

有了這個:

WHERE wh.WH_Month = 4

查詢中的內容為“如果表中有month = 4的任何記錄,請在結果中將此記錄提供給我,而不管它與哪個月份相關聯”。 沒有將“當前”結果與月份聯系在一起的信息,因此它將返回每個記錄。

編輯:我也支持用舊的逗號聯接替換當前方法,並且在您的模式中,我看不到很多外鍵關系或與您選擇的表相關的任何內容。例如,如何您知道給定項目/合同的客戶是什么? 值得深思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM