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

質問に対する私の理解では、任意の elem について、2 番目に低い日付の行を返したいということです。どちらの場合も日付が 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 に答える