2015-09-22 92 views
0

我在這裏有點迷路我需要你的幫助。我可以在聚合功能中使用Nz嗎? 例如:MAX中的Nz聚合函數SQL訪問

Nz(Max(Some table), Default_Column) 

我在這裏得到了我的SQL查詢。你可能不會理解這些名字。

SELECT Equip.id_equipamento, Calib.id_calibração, 
     Nz(Max([Registo de Calib].[DateRealization]),[Calib].[Date Activation]) AS [Last Date], 
     Calib.Tip 
FROM Equip 
    INNER JOIN (Calib INNER JOIN [Registo de Calib] ON Calib.id_calibração = [Registo de Calib].id_calibração) ON Equip.id_equipamento = Calib.id_equipamento 
WHERE (((Equip.id_equipamento)=[Calib].[id_equipamento])) 
GROUP BY Equip.id_equipamento, Calib.id_calibração, Calib.Tip; 

它給出的錯誤與我使用聚合函數時沒有的group by相同。

任何想法?

這裏的交易是如果我選擇的列與max是空的或空的,它將從calib的列date activation獲得值。我需要這個用日期計算查詢。

+1

,如果你把'[CALIB] [日期激活]它應該工作'進Max()聚合爲好。 – Andre

+0

我認爲它的工作原理!只要做一些數據測試,看看查詢是否「用戶故障證明」。 – int3

回答

1
Nz(Max([Registo de Calib].[DateRealization]), [Calib].[Date Activation]) 

將(正確)抱怨[Calib].[Date Activation]既不在聚合函數中,也不在組Gy子句中。

因此,解決辦法是聚集它還有:

Nz(Max([Registo de Calib].[DateRealization]), Max([Calib].[Date Activation])) 
+0

我可以在這個SELECT上使用另一列嗎? :DateAdd(「m」,Calib.MonthInterval,Calib。[日期激活])作爲[下次日期] 給出相同的錯誤。我可能需要在dateadd的另一列使用Max。 – int3

+0

這是一條通用規則。如果在查詢中使用分組,則必須將SELECT列表中的每個**列都彙總,或者在GROUP BY列表中。這包括您的[下一個日期]欄。它是否是計算列無關緊要。 – Andre