基本的にピボットクエリが作成され、各従業員のコストコードごとに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のコメントに基づいています。 ( 'PivotData2 as(PivotDataから[employereen、[8322.170]、[10184.2648] ...を選択してください)')のような 'with'節に別のクエリを追加して、最後のクエリを' SELECT * ... FROM PivotData2' 。 – fankt