将表格数据与历史表格合并

时间:2019-06-06 16:04:26

标签: sql-server tsql greatest-n-per-group

我正在尝试将一个表中的数据与一个历史表合并,以形成一个结果集,因为在两个表中捕获的数据有所不同。这两个表具有以下不同的条件;

一个查询是 从[RM-JOB]中选择*,其中[RM-JOB]。[充值租户] = 1

历史记录表是

从[RM-STAGE-HISTORY]中选择*,其中[STAGE-MAP] ='RERQ'

历史记录表可能有多个用于[​​STAGE-MAP] ='RERQ'的条目,所以我需要最新的记录。

下面是我尝试过的查询。

select * from [RM-JOB] where [RM-JOB].[RECHARGE-TENANT] = 1 or [JOB-NO] in (


select [RM-JOB].[JOB-NO], [RM_STAGES].DESCRIPTION CurrentStatus, CSTAGE.DESCRIPTION CurrentStage, * from [RM-JOB] 
inner join (select [RM-STAGE-HISTORY].[JOB-NO], [RM-STAGE-HISTORY].[STAGE-CODE] from [RM-STAGE-HISTORY]  
where [STAGE-MAP] = 'RERQ' group by [JOB-NO],[RM-STAGE-HISTORY].[STAGE-CODE]) as StageMap on [RM-JOB].[JOB-NO] = StageMap.[JOB-NO]
inner join  [RM_STAGES] on [RM_STAGES].[STAGE-CODE] = [RM-JOB].[JOB-STATUS]
inner join [RM_STAGES] CSTAGE on CSTAGE.[STAGE-CODE] = StageMap.[STAGE-CODE]
inner join [IH-LOCATION] on [IH-LOCATION].[PLACE-REF] = [RM-JOB].[PLACE-REF]
inner join [CO-PLACE] on [CO-PLACE].[PLACE-REF] = [IH-LOCATION].[PLACE-REF]

历史记录表示例为;

JOB-NO  STAGE-DATE  STAGE-TIME  STAGE-CODE  USER-ID MEMO    STAGE-MAP   USER-DATE   USER-TIME   STAGE-HIST-NUMBER
10128570    00:00.0 15:53:08    31  TMWSERVICE  Ticket No: 2    TMAC    00:00.0 15:53:19    1304576
10128570    00:00.0 15:53:16    34  TMWSERVICE  Ticket No: 2    TMST    00:00.0 15:53:21    1304577
10128570    00:00.0 15:54:22    52  TMWSERVICE  Ticket No: 2    RERQ    00:00.0 15:54:24    1304607
10128570    00:00.0 15:56:14    31  TMWSERVICE  Ticket No: 2    TMAC    00:00.0 15:56:24    1304646

和普通表格的例子是

JOB-NO  PMT-METHOD  CURRENT-STAGE-CODE  JOB-STATUS  CLIENT-CODE CONTRACTOR  INITIAL-PRIORITY    LATEST-PRIORITY TRADE-CODE  PLACE-REF
10128570        95  93  HSG VIVID01 R   R   CR  OB6236001

STAGE-HIST-NUMBER可以用于最大记录。

任何建议都值得赞赏。

谢谢

0 个答案:

没有答案