SQL查询以查找唯一值

时间:2016-03-17 19:28:25

标签: sql arcgis

我需要编写一个基于选择截断的查询并输出另一个表。选择标准如下:对于每个公共ID循环,通过AGREE列找到Y,如果没有Y则输出0,如果单个Y则输出那一年,如果多个Y则输出当前最年份。

输入表:

ID  AGREE   YEAR
1   N   2003

2   Y   2005
2   N   2015

3   N   2005    
3   N   2007
3   Y   2011
3   Y   1999

4   N   2005
4   N   2010

输出表:

ID  AGREE   YEAR

1   N   0
2   Y   2005
3   Y   2011
4   N   0

1 个答案:

答案 0 :(得分:2)

这是我的解决方案:

Select id, max(agree), max(case when agree = 'Y' then year else 0 end)
from [input table]
group by id

它依赖于id字段的分组,并且如果它存在于组中,则使用max语句返回“Y”,然后当同意为“Y”时返回年份的最大数字。请注意,您说“最近” - 如果此表包含将来的年份,则不会返回最新的,而是返回到最近的未来。

注意:执行此操作的另一种方法通常更快,涉及使用子查询。如果遇到性能问题,那就值得追求。