2013-04-25 76 views
0

我有一個場景,我想要得到一個計數,如果兩個日期之間的日期差異是 < = 14 days.That是在第一個表中,我必須篩選記錄中的任何一個值DATE1值是< = DATE2的14天。datediff在SQL中的多個記錄

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.So任何記錄,它拋出錯誤子查詢返回的多個 多個記錄。我想要一些解決方案。我正在使用SQL SERVER 2008

注意:我不能在這裏使用連接,因爲我想要兩個不同的查詢結果。 在此先感謝。

+0

正如你指出的,第二個表上有很多記載。那麼第一張表中的哪些日期要與第二張日期中的哪些日期比較 - 所有這些日期,其中一些日期,還是什麼?你想如何決定哪些記錄與哪些記錄進行比較? – 2013-04-25 11:01:32

+0

對不起,對錯誤的解釋。我有2個查詢第一個查詢將給沒有日期,第二個查詢將只給出一個日期。我需要檢查第一個查詢中的任何日期<= 14的第二個查詢的日期值。然後它會返回一個count.Thanks – mns 2013-04-25 11:13:56

+0

行,你只想從第二個表中選擇一個日期,但*哪一個* - 最小,最大,中位數,其他日期...? – 2013-04-25 11:28:03

回答

0

不能使用SELECT將返回其中函數需要標量值多個值...但是你可以加入這些表:

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

這個查詢將加入值只有當他們在14天內表和依靠來自DATE1_TABLE的唯一值。我不知道它的表現是否明智。

+0

您*可以*使用選擇,如果選擇將只返回一個值。 – 2013-04-25 11:29:56

+0

「哪裏函數期望標量值」 – 2013-04-25 11:37:29

1

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

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