我有這個數據庫:SQL服務器相當於GROUP_CONCAT()
,我需要得到以下數據每個客戶:
- 客戶名稱
- 合同名稱
- 該項目(s)
- 名員工誰登錄小時將項目從當月的第一天至當月最後一天
- 月期間記錄的每一個員工
- 員工比率
- 每位員工的總費用總小時數(即員工比率X員工工時)
- 結算聯繫人(圖)名稱,地址]對於每個合同
我有以下查詢,到目前爲止,但我需要實現MySQL的GROUP_CONCAT的MSSQL版本()
SELECT
Cl.LegalName AS ClientNames,
Cr.ContractDesc AS ContractNames,
P.ProjectName AS ProjectNames,
(E.FirstName + ' ' + E.LastName) AS EmployeeNames,
SUM(WH.HoursWorked) AS TotalHours,
(SUM(WH.HoursWorked) * BR.Rate) AS TotalCharges,
(Ca.FirstName + Ca.LastName + ', ' + Ca.AddrLine1) AS BillingContacts
FROM Clients Cl
JOIN Contracts Cr
ON(Cl.ClientID = Cr.ClientID)
JOIN Projects P
ON(Cr.ContractID = P.ContractID)
JOIN EmployeesProjects EP
ON(P.ProjectID = EP.ProjectID)
JOIN Employees E
ON(EP.EmpID = E.EmpID)
JOIN WorkHours WH
ON(E.EmpID = WH.EmpID)
JOIN BillingRates BR
ON(E.TitleID = BR.TitleID) AND (E.Level = BR.Level)
JOIN ContractsContacts CC
ON(Cr.ContractID = CC.ContractID)
JOIN Contacts Ca
ON(CC.ContactID = Ca.ContactID)
WHERE WH_Month = 4
AND WH_Year = 2013
當我開始以下this例子,我到這裏停了下來,因爲我意識到,我不能引用來自其他子查詢(ProjectNames)表別名(CR)。
SELECT
Cl.LegalName AS ClientNames,
(
SELECT ContractDesc + ', '
FROM Contracts Cr
WHERE Cl.ClientID = Cr.ClientID
FOR XML PATH('')
) ContractNames,
(
SELECT ProjectName + ', '
FROM Projects P
WHERE Cr.ContractID = P.ContractID
FOR XML PATH('')
) ProjectNames
FROM Clients Cl
我該如何去做這件事?
的可能重複(http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-功能功能於微軟的SQL服務器2005年) – podiluska