2017-11-22 12 views
0

私は以下の表を参考にして、開始時間と終了時間の情報を1つのマスターテーブルに集約しようとしています。分かりやすくするために、ディスカバリー開始時間と終了時間を集計するだけに集中しています(開始時間はStartedDnで、DispatchType = Data.Matter、インポートおよび終了時間はここでFinishedOn DispatchType = Data.Matter、DataExtract)。テーブル内の複数の行を持つデータの集約

2つのディスパッチタイプ間の共通IDは、設定IDです。

ジョブズのモックアップ:コレクションテーブルのアップ

jobstable names #Jobs

モック私が集約しようとしています:

collection table named #JobsTableCollection

簡単な更新は以下のように参加動作しません。

UPDATE jtc 
SET jtc.JobsTable_DiscoveryStartTime = (SELECT jobs.StartedOn = CASE jobs.DispatchType WHEN 'Data.Matter;Import' THEN jobs.StartedOn END), 
    jtc.JobsTable_DiscoveryEndTime = (SELECT jobs.FinishedOn WHERE jobs.DispatchType = 'Data.Matter;DataExtract'), 
FROM #JobsTableCollection AS jtc 
INNER JOIN #Jobs AS jobs ON jtc.DiscoveryGroupId = jobs.SettingsId 

CTE経由でアップデートを作成しようとしていますが、誰かがこの情報を試して集計するより良い方法についてアドバイスしているのであれば、興味があります。

答えて

0

私はあなたがLeram2002 @以下のバリアント

UPDATE jtc 
SET jtc.JobsTable_DiscoveryStartTime = ISNULL(jobs1.StartedOn,'19000101'), 
    jtc.JobsTable_DiscoveryEndTime = ISNULL(jobs2.FinishedOn,'19000101') 
FROM #JobsTableCollection AS jtc 
LEFT JOIN #Jobs AS jobs1 ON jtc.DiscoveryGroupId = jobs1.SettingsId AND jobs1.DispatchType = 'Data.Matter;Import' 
LEFT JOIN #Jobs AS jobs2 ON jtc.DiscoveryGroupId = jobs2.SettingsId AND jobs2.DispatchType = 'Data.Matter;DataExtract' 
+0

を使用することができると思う - 本当によく働いたこと、ありがとうございました!私はアップデートを複雑にしていたようです:/ありがとう! – iWROTEitANDdidITlive

+0

あなたはようこそ! ) – Leran2002

関連する問題