0

2 つの日付の日付の差が <=14 日である場合にカウントを取得するシナリオが 1 つあります。つまり、最初のテーブルで、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 を使用しています

注: ここでは結合を使用できません。2 つの異なるクエリからの結果が必要だったからです。前もって感謝します。

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 に答える