gpt4 book ai didi

sql - 如何从最接近table1的DATE FIELD的table2中提取数据?

转载 作者:行者123 更新时间:2023-12-04 02:41:23 26 4
gpt4 key购买 nike

我有以下两个表诊断和锻炼我想提取最接近 Diagnose_Date 的锻炼日期,它应该是锻炼表中的 1 行。

我已经尝试在 where 条件下使用 DATEDIFF 函数进行左连接

SELECT D.ID,D.Diagnose_Date,D.Type1,D.Type2,E.Exercise_Date],E.Field1,E.Field2,E.Field3
FROM Diagnose D
LEFT JOIN Exercise E
ON D.ID=E.ID
WHERE DATEDIFF(DAY,[Diagnose_Date],[Exercise_Date]) BETWEEN -30 AND 30

任何帮助都会很有帮助

提前致谢


诊断表

------------------------------------------
ID Dignose_Date Type1 SubType1
------------------------------------------
1 10/01/2010 01 1.1
2 20/02/2012 02 2.2
3 30/03/2013 01 1.2
------------------------------------------

运动表

------------------------------------------
ID Exercise_Date Field1 Field2 Field3
------------------------------------------
1 01/01/2010 x y z
2 10/02/2012 a b c
2 01/04/2012 e f f
3 01/03/2013 x y z
3 05/04/2013 a b c
3 01/06/2013 x y z
------------------------------------------

预期结果应该是:

------------------------------------------------------------------------
ID Diagnose_Date Exercise_Date Type1 SubType2 Field1 Field2 Field3
------------------------------------------------------------------------
1 10/01/2010 01/01/2010 01 1.1 x y z
2 20/02/2012 10/02/2012 02 2.2 a b c
3 30/03/2013 05/04/2013 01 1.2 a b c
-------------------------------------------------------------------------

最佳答案

首先,在 CTE 中,对于每个诊断,获取诊断日期和与该诊断相关的所有练习日期之间的最小时间间隔。

WITH MIN_DATES_CTE(ID, DATE_DIFF)
AS (
SELECT ID, MIN(ABS(DATEDIFF(DAY,[Diagnose_Date],[Exercise_Date])))
FROM Exercise E
INNER JOIN Diagnose D ON D.ID = E.ID
GROUP BY E.ID
)

然后,按ID和最小时间间隔加入Diagnose和Exercise

SELECT D.ID,D.Diagnose_Date,D.Type1,D.Type2,E.Exercise_Date],E.Field1,E.Field2,E.Field3
FROM Diagnose D
LEFT JOIN Exercise E ON D.ID = E.ID
INNER JOIN MIN_DATES_CTE ON MIN_DATES_CTE.ID = E.ID
WHERE ABS(DATEDIFF(DAY,[Diagnose_Date],[Exercise_Date])) = MIN_DATES_CTE.DATE_DIFF

关于sql - 如何从最接近table1的DATE FIELD的table2中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com