在Access 2007中,我有一個總計查詢(其中我點擊了總計按鈕,並且它具有「group by」列)。大多數列都很好...按列,最大列,最小列等分組。對於其中的一些,我想只提取字符串列的最後一個非空(非「或空值)值。「Totals」查詢:顯示最後一個非空字符串
這裏是什麼我的SQL看起來像一個示例:
SELECT Min(Duplicates.AttendedODBefore) AS AttendedODBefore,
Min(Duplicates.ContactByPost) As ContactByPost,
Last(Duplicates.PlannedStart) As PlannedStart,
Min(Duplicates.AccessibilityRequirements) AS AccessibilityRequirements,
Last(Duplicates.UcasNumber) As UcasNumber
-- ^^^^
FROM DuplicateStudents As Duplicates
GROUP BY
Duplicates.ID
表達強調的是一個我想要改變的最後一個非空場。有沒有一個Access特定的或普通的SQL表達式會這樣做?
編輯:原來,Min()
和Max()
的字符串值工作而忽略空值,取第一個和最後一個值的字母順序。這並不完美,因爲它不能保證所選的值是最後一個值,但它比使用Last()
可能給出的空值負載要好。
最後的真正含義是什麼?它意味着一種排序 - 這是表格不能保證的。因此,通過「最後」您明確需要指定表中某些列的排序。比如說,你想要訂購的那一列叫做「入門時間」,然後你可以從DupStu中選擇max(入門時間),其中UcasNumber不爲空,以找出最後一個入口的「關鍵字」 - 當然如果兩個記錄共享相同的「密鑰」,這是行不通的... – 2010-12-23 09:50:39
@John感謝您的反饋意見。我不知道如何爲'group by'排序記錄,但它似乎並不重要,因爲它們默認情況下是通過自動遞增主鍵排序的,這使得它們按創建時的順序排列。所以這真是一個問題。 – 2010-12-23 09:54:16