如果我们有这样的数据:
Element Year
--------------
Elem1 2012
Elem1 2013
Elem1 2015
Elem2 2012
Elem2 2013
Elem3 2012
当元素出现时,元素失败,如何使用T-SQL获取每个失败元素的失败年份?
Elem1 2013
Elem2 2013
编辑以斜体添加文字
答案 0 :(得分: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中使用您的示例表进行了测试。)
答案 1 :(得分:0)
在这里。
SELECT *
FROM test
WHERE year IN(
SELECT year
FROM test
GROUP BY year
HAVING COUNT(1) = 2 )