0

我有一个场景,如果两个日期之间的日期差 <=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

但是我在两个表中都有多条记录,但是我想选择任何有这种差异的记录,然后它会得到一个>0的计数。所以,它抛出错误子查询返回了多个记录。我想要一些解决方案。我我正在使用 SQL SERVER 2008

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

4

2 回答 2

1

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

SELECT TOP 1 *
    FROM DATE1_TABLE 
     WHERE DATEDIFF(DD,DATE1,(SELECT DATE2 FROM DATE2_TABLE))<=14
于 2013-04-25T11:04:29.160 回答
0

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

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

此查询将仅在 14 天内的值上连接表,并计算 DATE1_TABLE 中的唯一值。我不知道这是否明智。

于 2013-04-25T11:03:27.870 回答