基本上,我創建了一個數據透視查詢,其中它將顯示每個員工每個成本碼的total_work_hours。刪除顯示在主鍵中的重複行
這是我的期望的輸出:
employeeno 8322.170 10184.2648 8321.169 10184.2649 <- costcodes
--------------------------------------------------------------------------
080418 10.00 1.50 NULL NULL
080441 6.50 NULL 1.00 3.00
但是這是我的查詢結果:
employeeno 8322.170 10184.2648 8321.169 10184.2649 <- costcodes
--------------------------------------------------------------------------
080418 10.00 NULL NULL NULL
080418 NULL 1.50 NULL NULL
080441 NULL NULL 1.00 NULL
080441 6.50 NULL NULL NULL
080441 NULL NULL NULL 3.00
這是我的內查詢的結果:
employeeno costcoding hour_per_costcode
--------------------------------------------------
PH080418 8322.170 10.00
PH080418 10184.2648 1.50
PH080441 8321.169 1.00
PH080441 8322.170 6.50
PH080441 10184.2649 3.00
這是我的查詢:
WITH PivotData AS
(SELECT wa.id,wa.sitecode, wa.companycode, wa.startdate, wa.enddate,
wa.description, wa.ratetypeid, wa_details.employeeno,
CAST(wa_details.costcode AS NVARCHAR(MAX)) + '.' +
CAST(wa_details.subcostcode AS NVARCHAR(MAX)) costcoding ,
wa_details.subcostcode, wa_details.hrswork [hour_per_costcode],
view_ttl_hours.ttl_work_hrs
FROM workallocation wa
INNER JOIN workallocation_details wa_details
ON wa.id = wa_details.workallocationid
INNER JOIN
(SELECT SUM(ttl_work_hrs) ttl_work_hrs, employee_id
FROM vwu_SUM_TIMESHEET_DAILY
WHERE TKSDATE BETWEEN '02-09-2012' AND '02-09-2012'
GROUP BY employee_id
) view_ttl_hours
ON wa_details.employeeno=view_ttl_hours.employee_id WHERE wa.id=99
)
SELECT employeeno, [8322.170], [10184.2648], [8321.169], [10184.2649]
FROM PivotData
PIVOT (MAX([hour_per_costcode])
FOR costcoding
IN ([8322.170], [10184.2648], [8321.169], [10184.2649])
) AS PivotResult
ORDER BY employeeno;
我的問題是我將如何能夠統一我的多行的價值,使我的願望輸出將實現?我也嘗試跨標籤查詢,但結果也是一樣的。
我需要一些關於如何解決這個問題的指導;你能幫我嗎?
如果你改變你的選擇,在過去查詢'SELECT *'是應該是很明顯的是什麼原因造成問題。我可以給出的另一個建議是消除PivotData中不直接由數據透視表使用的所有內容。 – cadrell0
@ cadrell0 - 感謝您的回覆。我已經注意到很久以前的複製,但我的詳細信息表包含employeeno,costcode,subcostcode和hrswork。所有這些都是唯一鍵。 –
根據@ cadrell0的評論。如何在'with'子句中添加另一個查詢(如'PivotData2 as(select Peenot,[8322.170],[10184.2648] ... from PivotData)'),然後將最後一個查詢改爲'SELECT * ... FROM PivotData2' 。 – fankt