1

私は、Excel ドキュメントの形式でデータを提供する人事プロジェクトに取り組んでいます。

スプレッドシートからデータを取得して SQL にインポートするパッケージを作成しました。次に顧客は、データ接続を作成し、データをピボット テーブルに配置して、操作および計算を実行したいと考えていました。

これにより、ソースから修正しようとした小さな問題が明らかになりましたが、システム側 (SAP バックエンドでの作業) では解決できないようです。

私が持っているのは、コスト センター名が欠落しているか、コスト センター番号とコスト センター名の両方が欠落しているインポートから SQL に入ってくる情報です。

例:

EmpID    EmployeeName    CostCenterNo    CostCenterName
001      Bob Smith       123456          Sales
010      Adam Eve        543211          Marketing
050      Thomas Adams    121111
121      James Avery     

私は人事部と協力して、これらの従業員に関する適切な情報を入手しました。その情報を別の表に追加しました。

私がやりたいことは、データがステージング テーブルにインポートされるときに、不足している情報を挿入する方法を見つけることです。

基本的にデータを完成させます。

EmpID    EmployeeName    CostCenterNo    CostCenterName
001      Bob Smith       123456          Sales
010      Adam Eve        543211          Marketing
050      Thomas Adams    121111          Supply Chain
121      James Avery     555316          Human Resources
4

5 に答える 5

1

次のような基本的な更新に問題はありますか

Update <tablename> set CostCenterNo = (SELECT CostCenterNo from <hr_sourced_table> where EmpID =x) where EmpID = x 

必要に応じて追加できます

Where CostcentreNo is null

これを行わなかったとしても、正しいはずのすべてのデータが更新されますが、何らかの理由でそれが必要ない場合は、このような単一のクエリで両方のフィールドを更新できます

Update <tablename> set CostCenterNo = (SELECT CostCenterNo from <hr_sourced_table> where EmpID =x),CostCenterName = (SELECT CostCenterName from <hr_sourced_table> where EmpID =x) where EmpID = x 
于 2013-08-06T18:38:41.530 に答える
0

別の開発者と協力してソリューションを作成しました。これが私たちが思いついたものです。このスクリプトを含むデータフローの後に実行する「SQL実行タスク」を作成しました。

MERGE [Staging].[HRIS_EEMaster] AS tgt
    USING (
    SELECT PersNo AS EmpID,
        CostCenterNo AS CCNo,
        CostCenterName AS CCName
    FROM [dbo].[MissingTermedCC]
          ) AS src ON src.EmpID = tgt.PersNo
    WHEN NOT MATCHED BY TARGET
    THEN INSERT (
    PersNo,
    CostCenterNo,
    CostCenterSubDiv
          )
    VALUES (
        src.EmpID,
        src.CCNo,
        src.CCName
          )
    WHEN MATCHED
    THEN UPDATE
          SET tgt.CostCenterNo = CASE
          WHEN src.CCNo > '' THEN src.CCNo
          ELSE tgt.CostCenterNo
        END,
              tgt.CostCenterSubDiv = CASE
          WHEN src.CCName > '' THEN src.CCName
          ELSE tgt.CostCenterSubDiv
        END; 

他の誰かが同様の問題に遭遇した場合に備えて共有したかった. 皆様のご協力に改めて感謝いたします。

于 2013-08-06T20:50:44.333 に答える