2016-10-10 105 views
1

我有一个数据库,具有相同唯一ID的多个日期。我试图找到每个唯一ID的第一个(最小)和最后(最大)日期。我希望得到的结果是: 唯一ID,第一次约会,最后日期,字段1,字段2,字段3查找日期字段的最小/最大值

Select max(date_Executed) as Last_Date, 
    (select unique_ID, MIN(date_Executed)as First_Date 
from Table_X 
group by unique_ID, Field1, field2,field3 
) 
from Table_X 
where unique_ID = unique_ID 
group by unique_ID, Field1, field2,field3 
order by unique_ID,First_Permit_Date 

该错误消息我得到的是:

只有一个表达式可以在指定子查询未使用EXISTS引入时选择列表。 消息207,级别16,状态1,行19 无效的列名称'First_Permit_Date'。

我是新来的SQL ... 感谢您的帮助 -

回答

4

何尝不是一种简单的选择与组由

Select max(date_Executed) as Last_Date, MIN(date_Executed) as First_Date 
from Table_X 
group by unique_ID, Field1, field2,field3 
order by unique_ID,First_Permit_Date 

您可以使用一个以上的聚合函数INA选择.. (使用相同的分组条款)

+0

我正在编写... – Gross

+0

@Gross。更好地解释你的评论..你需要一些其他的支持..? – scaisEdge

+0

如果你的日期字段可以为'null',比如'date_Executed'还没有发生,并且你希望'null'是最小值(如果它存在的话),你需要做一些事情'min( isnull(date_Executed,convert(datetime,0)))as First_Date'。 –

0

难道它不应该是这样吗? 我没有进一步了解您的表格,但第二个'select'语句似乎会导致错误。

SELECT unique_ID, min(date_Executed) as First_Date, max(date_Executed) as Last_Date, field1, field2, field3 

FROM Table_X 
GROUP BY unique_ID, Field1, field2, field3 
order by unique_ID, First_Permit_Date 
+0

我想我让它变得如此困难......!谢谢! – Gross