2016-10-12 85 views
0

我正在嘗試查找唯一ID的最早日期實例(唯一ID具有多行數據,日期不同),然後過濾該結果以查找數據2005年和2010年使用子查詢。我不斷收到關鍵字'group'附近的錯誤語法:從最小和最大日期字段中查找日期範圍

Select * 
from (select custnum, YEAR(min(Date_field)) as field1, Field2, field3, field4, field5 
     from table1 
     group by custnum, field2, field3, field4, field5) 
    having YEAR(min(Date_field)) between 2005 and 2010 

任何想法? 感謝您的幫助 -

+0

是custnum你UNIQUEID? –

+0

嘗試在子查詢中獲取2005年至2010年之間的「具有年(min(Date_field))」。 –

+0

您正在使用一個子選擇符,不用別名,您的'having'子句在外部'select'中,而'group by'在子選擇符中。 Yo也在外部'select'中引用了不存在的子選擇'Date_field'。 – ajeh

回答

0

如果我理解正確的話,你可以使用:

WITH CTE AS 
(
    SELECT custnum, 
      Field2, 
      Field3, 
      Field4, 
      Field5, 
      Field1 = MIN(Date_Field) OVER(PARTITION BY custnum) 
    FROM dbo.table1 
) 
SELECT * 
FROM CTE 
WHERE Field1 BETWEEN '20050101' AND '201'; 
+0

查詢執行,但沒有返回任何數據... – Gross

+0

@Gross你是否有行的'custnum'的最短日期是在2005年和2010年之間?什麼是'Date_Field'數據類型? – Lamak

+0

yup-我所擁有的數據具有多行,具有相同的custnum,日期範圍從1982到當前。日期字段類型是datetime – Gross