SQL中多个记录之间的约会

时间:2013-04-25 10:52:43

标签: sql-server sql-server-2008

我有一个场景,如果两个日期之间的日期差异是,我想得到一个计数 < = 14天。在第一个表中我必须过滤记录,其中DATE1值的任何一个值都是< = DATE2的14天。

For Ex:
 q1="SELECT DATE1 FROM DATE1_TABLE";
 q2="SELECT DATE2 FROM DATE2_TABLE";

 My simple query :

 SELECT 
    COUNT(*) 
 FROM 
     DATE1_TABLE WHERE DATEDIFF(DD,DATE1,(SELECT DATE2 FROM DATE2_TABLE))<=14

但我在两个表中都有多条记录,但我想选择任何记录 这个差异然后它会得到一个&gt; 0.因此,抛出错误子查询返回更多 我想要一些解决方案。我正在使用SQL SERVER 2008

注意:我不能在这里使用加入。因为我想要两个不同查询的结果。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在查询中使用TOP 1子句..

SELECT TOP 1 *
    FROM DATE1_TABLE 
     WHERE DATEDIFF(DD,DATE1,(SELECT DATE2 FROM DATE2_TABLE))<=14

答案 1 :(得分:0)

你不能使用SELECT,它会返回多个值,其中函数需要标量值...但是你可以加入这些表:

SELECT 
  COUNT(DISTINCT dt1.*)
FROM DATE1_TABLE dt1 INNER JOIN DATE2_TABLE dt2 ON DATEDIFF(DD,DATE1,DATE2)<=14

此查询仅在值在14天内时才会连接值,并依赖于DATE1_TABLE中的唯一值。我不知道它是否表现得很明智。