我有兩個表: 1 - 人,2 - 地址SQL選擇行
每個人都可以有多個地址條目。
這兩個表都有一個狀態列。
- 如果所有地址行狀態列都'取消',Person條目的狀態值將被'取消'。
- 如果Address表中的所有行都是'完成'的,那麼Person的狀態值將被'完成'。
- 如果其中一個地址錶行被取消,而其餘的地址被「完成」,則個人狀態將被「完成」。
- 如果地址行的一個仍然「INPROGRESS」,然後資格將 「INPROGRESS」
我想在Person表中選擇所有PERSONID,所有行的那個人的地址表沒有'inprogress'狀態,但有他們的Person.Status ='inprogress'
我試圖通過做ff來做到這一點。
select personID
from Person P
where P.status not in ('completed','canceled') and
P.personID in (
select A.personID
from Address A
where A.status in ('completed','canceled')
and A.personID = P.personID
group by personID
)
我只是不確定它是否正確,因爲我可能會選擇具有取消和完成但可能仍在進行中的地址行的personID。
我通常會說子查詢的GROUP BY可以被刪除。也許SQL Server希望它或SELECT DISTINCT更好地執行? – jarlh
添加一些示例表格數據和預期結果 - 以及格式化文本。 – jarlh
您剛剛更改了您的要求,並使以下給出的答案無效。你想使用查詢來計算狀態,還是選擇已有的狀態? –