手术记录表a和手术讨论表b两个表之间只有病人ID可以关联,但是有些病人ID下会有多个手术记录和多个手术讨论(手术记录和手术讨论的数量一致),该如何关联才能让手术记录和手术讨论一一对应?手术记录a和手术讨论b的创建时间不同,但是创建时间顺序相同,朋友说或许可以按顺序一一对应起来,可是我没学过这种方法,哪位大神能指导指导啊,谢谢
select userid, row_number() over(partition by userid order by discuss_time) rowid
from table
用开窗函数 row_number 就能加时间了,然后两个表的 rowid 关联。
CREATE TABLE #T_A
(P_ID int,
RECORD varchar(50),
CREATETIME date)
INSERT INTO #T_A
SELECT 1,'病人1记录1','2021-01-01' UNION ALL
SELECT 2,'病人2记录1','2021-01-02' UNION ALL
SELECT 1,'病人1记录2','2021-01-03'
CREATE TABLE #T_B
(P_ID int,
DISCUSS VARCHAR(50),
CREATETIME date)
INSERT INTO #T_B
SELECT 1,'病人1讨论1','2021-01-02' UNION ALL
SELECT 1,'病人1讨论2','2021-01-03' UNION ALL
SELECT 2,'病人2讨论1','2021-01-04'
SELECT A.P_ID,A.RECORD,B.DISCUSS FROM
(SELECT P_ID,ROW_NUMBER() OVER(PARTITION BY P_ID ORDER BY CREATETIME) as RowNo,RECORD from #T_A ) A inner join
(SELECT P_ID,ROW_NUMBER() OVER(PARTITION BY P_ID ORDER BY CREATETIME) as RowNo,DISCUSS from #T_B) B on A.P_ID=B.P_ID and A.RowNo=B.RowNo