如果我们有这样的数据:
Element Year
--------------
Elem1 2012
Elem1 2013
Elem1 2015
Elem2 2012
Elem2 2013
Elem3 2012
当一个元素出现 2 次时,一个元素失败,如何使用 T-SQL 获取每个失败元素的失败年份?
Elem1 2013
Elem2 2013
编辑添加斜体文本
如果我们有这样的数据:
Element Year
--------------
Elem1 2012
Elem1 2013
Elem1 2015
Elem2 2012
Elem2 2013
Elem3 2012
当一个元素出现 2 次时,一个元素失败,如何使用 T-SQL 获取每个失败元素的失败年份?
Elem1 2013
Elem2 2013
编辑添加斜体文本
我对这个问题的理解是,对于任何给定的元素,您都希望返回日期第二低的行。这个例子有点模棱两可,因为在这两种情况下,日期都是 2013 年。如果我理解正确,应该这样做:
select * from table_name as t where
(select count(*) from table_name where element = t.element and year < t.year) = 1
IE:选择具有相同元素和较低年份的行数恰好为1的每一行。
很可能有一种更有效的方法,但这应该有效。(没有 tsql 方便,但用你在 mysql 中的示例表进行了测试。)
这里是。
SELECT *
FROM test
WHERE year IN(
SELECT year
FROM test
GROUP BY year
HAVING COUNT(1) = 2 )