1

如果我们有这样的数据:

Element Year
--------------
Elem1   2012
Elem1   2013
Elem1   2015
Elem2   2012
Elem2   2013
Elem3   2012

当一个元素出现 2 次时,一个元素失败如何使用 T-SQL 获取每个失败元素的失败年份?

Elem1 2013
Elem2 2013

编辑添加斜体文本

4

2 回答 2

1

我对这个问题的理解是,对于任何给定的元素,您都希望返回日期第二低的行。这个例子有点模棱两可,因为在这两种情况下,日期都是 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 中的示例表进行了测试。)

于 2013-02-19T04:41:54.397 回答
0

这里是。

SELECT *
FROM test
WHERE year IN(
              SELECT year
              FROM test
              GROUP BY year
              HAVING COUNT(1) = 2 )

Sql 小提琴

于 2013-02-19T04:09:29.703 回答