這是我的輸入表,每個站點都有不同的事件。
| 事件 | 地點 |
|---|---|
| R1 | 站點A |
| R2 | 站點A |
| R3 | 站點A |
| R4 | 站點A |
| R1 | B站 |
| R2 | B站 |
| R3 | B站 |
| R1 | 站點C |
| R2 | 站點C |
| R3 | 站點C |
| R4 | 站點C |
| R1 | 站點 D |
| R2 | 站點 D |
我正在嘗試根據事件發生對站點進行分類。從上面的輸入表中,我想得到這樣的答案
- 具有 R4 事件的站點 --> 站點 A 和站點 C
| R4發生部位 |
|---|
| 站點A |
| 站點C |
- 沒有 R4 事件的站點 --> 站點 B 和站點 C
| R3及以下發生部位 |
|---|
| B站 |
| 站點C |
- 只有 R2 或 R1 事件的站點 --> 站點 D
| R1 和 R2 僅發生地點 |
|---|
| 站點 D |
我試過使用
獲取具有 R4 事件的站點
select site where event = 'R4'
獲取沒有 R4 事件的站點
select site where event not in ('R4')
獲取只有 R2 或 R1 事件的站點
select site where event not in ('R4','R3')
我也嘗試使用計數方法,它給了我結果,但我不能使用它們,因為有時除了第一個站點之外,所有事件都發生在站點上,因此它不會是正確的結果。
uj5u.com熱心網友回復:
尋找匹配事件一組事件,如網站的一般方法R2,R3以及R4:
SELECT Site
FROM yourTable
WHERE Event IN ('R2', 'R3', 'R4')
GROUP BY Site
HAVING COUNT(DISTINCT Event) = 3;
uj5u.com熱心網友回復:
要獲取具有 R4 事件的站點(也可能具有其他/非 R4 事件):
select distinct site from yourtable where event = 'R4'
獲取沒有 R4 事件的站點(但它們必須有其他事件)
select distinct site from yourtable where event not in ('R4')
獲取只有 R2 或 R1 事件的站點(它們不應該有其他事件)
select distinct site
from yourtable yta
where event in ('R2','R1')
and not exists (select *
from yourtable ytb
where yta.site=ytb.site
and ytb.event not in ('R2','R1')
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387486.html
標籤:sql sql-server 查询语句
