2015-10-08 77 views
0

我有一個表是這樣的:SQL選擇從同一個表

enter image description here

我想編寫輸出有兩個2000年和2001年只有occurencies記錄的查詢。

在這種情況下,輸出會

Bb 2000 
Bb 2001 

,因爲只有一個名爲黑板上記錄有兩年occurencies。

我已經嘗試過子查詢和連接,但沒有成功,因爲兩列不是主鍵也不是外鍵。

謝謝。

+0

如果'Bb'也正好有一個記錄'2005',你想要它還是返回,還是隻有'2000/2001'記錄?或者,那個額外的'2005'記錄實際上是否使任何'Bb'行不能完全返回? – sstan

+0

我已經根據@vkp提供的解決方案解決了我的問題。 但是要回答您的問題,我的表格只能在_year_列中具有'2000'或'2001'。沒有其他年份會出現。但是,如果_year_有可能具有其他值,那麼我希望獲得對同一個_name_具有超過一年的記錄。 – RodWall

回答

1

您可以使用intersect來做到這一點。

select x.name, x.year from 
(
select name from table where year = 2000 
intersect 
select name from table where year = 2001 
) t join table x on t.name = x.name 
1

我的表只能在year20002001。沒有其他年份會出現。但是,如果year可能具有其他值,那麼我想要獲得同一name已超過一年的記錄。

如果你有需要處理與其他年份爲您的評論描述,那麼這是查詢我會用:

select id, name, year 
    from (select id, name, year, 
       count(distinct year) over (partition by name) as distinct_year_cnt 
      from table_name) 
where distinct_year_cnt > 1 
相關問題