TSQL连接两个表以获得所需的结果

Jac*_*gen 0 sql t-sql sql-server sql-server-2008

我有一个问题,为此获得所需的结果.例如,我有这样的表

表格1

+----------------------------------------------------------------------------------------+
|SerialId |serialidtagging |unifiedserial |     CreatedDatetime     | Wrkctrid | Embedded|  
|-----------------------------------------------------------------------------------------
|89250432 |   89250432-1   |    3266AD    | 2016-11-19 18:51:06.000 | Entry    |DRC53030 |
|89250432 |   89250432-2   |    3266AD    | 2017-01-05 17:30:45.000 | Entry    |F1461350 |
+----------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

表2

+---------------------------------------------------------------+
|unifiedserial |Pool| PoNum  |       audit_date        |Row_Num |
-----------------------------------------------------------------
|    3266AD    | IP |07664594| 2016-11-22 18:42:07.000 |   1    |
|    3266AD    | PL |07733189| 2016-11-26 02:24:12.000 |   2    |
|    3266AD    | PL |07771562| 2016-11-29 02:01:28.000 |   3    |
|    3266AD    | Re |07784874| 2016-11-29 14:42:05.000 |   4    |
|    3266AD    | IP |08394765| 2017-01-09 09:56:59.000 |   5    |
|    3266AD    | Re |08427441| 2017-01-10 19:04:37.000 |   6    |
+---------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

期望的输出

+---------------------------------------------------------------------------------------------------------------------+
|unifiedserial |Pool|  PoNum   |      audit_date        |Row_num| serialidtagging |serialid |    createddatetime      |
-----------------------------------------------------------------------------------------------------------------------
|   3266AD     |IP  | 07664594 |2016-11-22 18:42:07.000 |   1   |   89250432-1    |89250432 | 2016-11-19 18:51:06.000 |
|   3266AD     |PL  | 07733189 |2016-11-26 02:24:12.000 |   2   |   89250432-1    |89250432 | 2016-11-19 18:51:06.000 |
|   3266AD     |PL  | 07771562 |2016-11-29 02:01:28.000 |   3   |   89250432-1    |89250432 | 2016-11-19 18:51:06.000 |
|   3266AD     |Re  | 07784874 |2016-11-29 14:42:05.000 |   4   |   89250432-1    |89250432 | 2016-11-19 18:51:06.000 |
|   3266AD     |IP  | 08394765 |2017-01-09 09:56:59.000 |   5   |   89250432-2    |89250432 | 2017-01-05 17:30:45.000 |
|   3266AD     |Re  | 08427441 |2017-01-10 19:04:37.000 |   6   |   89250432-2    |89250432 | 2017-01-05 17:30:45.000 |
----------------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

加入表格时,我的参考是unifiedserial Is可以得到我想要的输出.如果只有unifiedserial是参考?正如你在table1中看到的那样,createddatetime = 2016-11-19 18:51:06.000我不知道是否有可能只从月份获得table2 .据我所知,我可以通过audit_dateaudit_date = createddatetime><= Month of createddatetime-audit_date

对不起,如果没有解释.但请依赖Sample表和输出.

TIA!

DVT*_*DVT 5

SELECT *
FROM table1 t1 JOIN table2 t2
ON t1.unifiedserial = t2.unifiedserial
AND DATEPART(month,t1.createddatetime) = DATEPART(month,t2.audit_date)
AND DATEPART(year,t1.createddatetime) = DATEPART(year,t2.audit_date)
Run Code Online (Sandbox Code Playgroud)