編輯
現在,我意識到這個問題是關於MySQL的,不是Excel中,我認爲像下面的查詢將工作:
update
Sites
inner join
(
select
s1.unique_id,
if(s2.accepted_sites = count(*),'Accepted','Incomplete') as final_status
from
Sites s1
left outer join
(
select
unique_id,
count(*) as accepted_sites
from
Sites
where
status = 'Accepted'
group by
unique_id
) as s2 on s2.unique_id = s1.unique_id
group by
s1.unique_id
) s on s.unique_id = Sites.unique_id
set
Sites.final_status = s.final_status
什麼這個查詢的作用:
- 內部
select
語句計算每個唯一ID接受的站點數量。
- 外部
select
聲明比較每個唯一ID的網站總數,並將其與接受網站的數量進行比較。如果計數相等,則最終狀態爲「接受」,否則爲「未完成」。
update
語句將last_status設置爲外部select
語句的結果。 (我是不是能夠測試更新的一部分,但希望它至少接近。)
。如果你的表位於A1在Excel
這樣原來的答覆,
嘗試進入這個陣列forumula *到單元格D2和複製是下降到表的最後一行:
=IF(SUM(IF((A$2:A$10=A2)*(C$2:C$10="Accepted"),1,0))=COUNTIF(A$2:A$10,A2),"Accepted","Incomplete")
*數組公式允許您一次性計算整列數據的數字,而不是一次只計算一行。要輸入數組公式,需要在公式中輸入或粘貼,然後按Ctrl + Shift + 輸入。
如果你這樣做了,則公式應獲得大括號周圍,像這樣:
{=IF(SUM(IF((A$2:A$10=A2)*(C$2:C$10="Accepted"),1,0))=COUNTIF(A$2:A$10,A2),"Accepted","Incomplete")}
什麼這個公式確實:
- 外
IF
語句將「接受「如果條件爲真,否則它將」不完整「
COUNTIF
語句計算整個中的ID數列與當前行的unique_id
匹配。
- 的
SUM
和內IF
語句加起來其中unique_id
當前行和狀態爲「已接受」的unique_id
相匹配的行數。 (注意,與陣列式,*
裝置and
。)
因此,總體而言,式檢查的次數的ID被接受相同的行具有比ID的數目。
這裏是我的測試表:
unique_id site status final_status
HMEX093 MEX025 Accepted Incomplete
HMEX093 HMEX056 Accepted Incomplete
HMEX093 LTY0014 Pending Incomplete
HMEX094 MEX025 Accepted Accepted
HMEX094 HMEX056 Accepted Accepted
HMEX094 LTY0014 Accepted Accepted
HMEX095 MEX025 Pending Incomplete
HMEX095 HMEX056 Pending Incomplete
HMEX095 LTY0014 Pending Incomplete
嗨devuxer, 謝謝你這麼多的信息,但我處理MySQL查詢。 而不是Excel表格。 有什麼建議? – Priyanshu
我剛剛將問題的第一個標籤從Excel更改爲MySQL查看編輯歷史記錄,有人將Excel標籤添加到您的問題中,但這是誤導性的。 – devuxer
@Priyanshu,剛剛用MySQL查詢更新了我的答案。我無法測試更新查詢是否有效,但更新查詢中的選擇查詢確實有效,所以希望這會幫助您開始。 – devuxer