2016-11-04 50 views
0

我想查詢一個表並將日期設置爲2分隔行,第一行將是距離今天最近的日期,最後一行將包含最大日期。嘗試檢索2個日期時發生SQL混淆

我想出了這一點:

SELECT   
    ID_CAND, DATE_JOUR 
FROM   
    Paie.dbo.PAI_CAND_JOUR_NON_DISPO nd 
WHERE   
    (ID_CAND = 16246) 
    AND (DATE_JOUR = (SELECT MIN(DATE_JOUR) AS Expr1 
         FROM Paie.dbo.PAI_CAND_JOUR_NON_DISPO AS ds 
         WHERE (ds.ID_CAND = nd.ID_CAND) 
         AND (DATE_JOUR > GETDATE())) 
     OR 
     DATE_JOUR = (SELECT MAX(DATE_JOUR) AS Expr1 
         FROM Paie.dbo.PAI_CAND_JOUR_NON_DISPO AS ds 
         WHERE (nd.ID_CAND = ds.ID_CAND) 
         AND (DATE_JOUR > GETDATE()))) 

,並返回只有一排......但是當我單獨運行內選擇:

SELECT  
    MIN(DATE_JOUR) AS Expr1 
FROM    
    Paie.dbo.PAI_CAND_JOUR_NON_DISPO AS ds 
WHERE   
    (ID_CAND = 16246) AND (DATE_JOUR > GETDATE()) 

SELECT   
    MAX(DATE_JOUR) AS Expr1 
FROM 
    Paie.dbo.PAI_CAND_JOUR_NON_DISPO AS ds 
WHERE   
    (ID_CAND = 16246) AND (DATE_JOUR > GETDATE()) 

它確實返回2個不同的值.. 。 我究竟做錯了什麼 ?

+1

您發佈甚至不應該工作的第一個查詢。 ID_CAND列在這裏不明確,因爲無法知道它來自哪個表。而在天堂,如果你正在創建彙總數據,那麼給這些列起一個名字就意味着什麼。 Expr1沒用。 –

+0

好吧,讓我解決,我猜 –

+0

你想要什麼結果?如果我們不知道你想要什麼,我們就不知道你在做什麼錯了。 –

回答

2

也許這可以幫助

Select MinDate = min(case when DATE_JOUR >= GETDATE() then DATE_JOUR else null end) 
     ,MaxDate = max(DATE_JOUR) 
From Paie.dbo.PAI_CAND_JOUR_NON_DISPO   
Where ID_CAND = 16246 

兩個獨立的行

Select Expr1 = min(case when DATE_JOUR >= GETDATE() then DATE_JOUR else null end) 
From Paie.dbo.PAI_CAND_JOUR_NON_DISPO   
Where ID_CAND = 16246 
Union All 
Select Expr1 = max(DATE_JOUR) 
From Paie.dbo.PAI_CAND_JOUR_NON_DISPO   
Where ID_CAND = 16246 
+0

Nop,他們在同一行...我需要他們在2個單獨的行 –

+0

@Antoine See updated ..錯過了那部分, –

+0

所有好,我接受這個答案,當網站允許我...在3分鐘內,非常感謝你 –