我有一個表是這樣的:SQL選擇從同一個表
我想編寫輸出有兩個2000年和2001年只有occurencies記錄的查詢。
在這種情況下,輸出會
Bb 2000
Bb 2001
,因爲只有一個名爲黑板上記錄有兩年occurencies。
我已經嘗試過子查詢和連接,但沒有成功,因爲兩列不是主鍵也不是外鍵。
謝謝。
我有一個表是這樣的:SQL選擇從同一個表
我想編寫輸出有兩個2000年和2001年只有occurencies記錄的查詢。
在這種情況下,輸出會
Bb 2000
Bb 2001
,因爲只有一個名爲黑板上記錄有兩年occurencies。
我已經嘗試過子查詢和連接,但沒有成功,因爲兩列不是主鍵也不是外鍵。
謝謝。
您可以使用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
我的表只能在
year
列2000
或2001
。沒有其他年份會出現。但是,如果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
如果'Bb'也正好有一個記錄'2005',你想要它還是返回,還是隻有'2000/2001'記錄?或者,那個額外的'2005'記錄實際上是否使任何'Bb'行不能完全返回? – sstan
我已經根據@vkp提供的解決方案解決了我的問題。 但是要回答您的問題,我的表格只能在_year_列中具有'2000'或'2001'。沒有其他年份會出現。但是,如果_year_有可能具有其他值,那麼我希望獲得對同一個_name_具有超過一年的記錄。 – RodWall