在sql中加入两个不完全匹配日期的表

时间:2012-05-02 13:57:29

标签: sql sql-server tsql

我有一张桌子,日期大约是另一张桌子前1个月。

例如, 一张表报告3月31日第一季度结束 其他报告于2月28日(或29日)结束 但是,无论两个日期都不完全相同,在日期之前加入它们就完全没问题。

请提出任何建议。

由于

5 个答案:

答案 0 :(得分:1)

您可以加入DateDiff(dd,Date1,Date2)< X

或者更精确地

select endOfMonth.*, begOfMonth.* 
from endOfMonth join begOfMonth 
on DATEADD (dd , 1 , endOfMonth.date ) = begOfMonth.Date

答案 1 :(得分:0)

如果我非常了解您并且您在这些表中具有相同数量的列,那么您应该在SQL查询中使用UNION。在此处查看有关UNION的更多信息:http://en.wikipedia.org/wiki/Set_operations_%28SQL%29

答案 2 :(得分:0)

一种方法是使用DATEPART() function为任何给定日期返回quarter。然后你就可以加入返回的季度。

示例SQL:

SELECT *
FROM 
(
    SELECT DATEPART(QUARTER,date_column) AS t1_quarter
    FROM table1
    UNION ALL
    SELECT DATEPART(QUARTER,date_column) AS t2_quarter
    FROM table2
) AS temp
WHERE temp.t1_quarter = temp.t2_quarter;

根据需要放置任何其他字段(最有可能是ID字段)。

答案 3 :(得分:0)

您的ON条款可以查看匹配的年份和季度:

ON TABLE1.YEAR([1st quarter end ]) = TABLE2.YEAR([1st quarter end ])
AND TABLE1.QUARTER([1st quarter end ]) = TABLE2.QUARTER([1st quarter end ])

答案 4 :(得分:0)

select val1 From Table1 T1 inner Join Table2 t2 on MONTH(T1.date1) = MONTH(t2.date1)
And YEAR(T1.date1) = YEAR(t2.date1)