2016-02-04 60 views
0
unique_id site  status  Final status 
HMEX093  MEX025 Accepted  Incomplete 
HMEX093 HMEX056 Accepted  Incomplete 
HMEX093  LTY0014 Pending  Incomplete 

我想更新查詢來更新最終狀態列,具體取決於狀態查詢。 每個unique_id具有不同狀態的多個站點。 如果條件總和,想更新最終狀態欄。例如 。 unique_id HMEX093有3個站點具有不同的站點。我想檢查這些網站的狀態,如果site> = 3最終狀態欄的sum(status ='Accepted')應該用Approved值更新。 如果對於unique_id的相應網站至少有一個掛起狀態,則最終狀態會更新爲不完整,如上所示。 請幫忙。 我試着用Case來陳述,但沒有成功。更新新列使用現有字段上的總和條件

回答

1

編輯

現在,我意識到這個問題是關於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 
+0

嗨devuxer, 謝謝你這麼多的信息,但我處理MySQL查詢。 而不是Excel表格。 有什麼建議? – Priyanshu

+0

我剛剛將問題的第一個標籤從Excel更改爲MySQL查看編輯歷史記錄,有人將Excel標籤添加到您的問題中,但這是誤導性的。 – devuxer

+0

@Priyanshu,剛剛用MySQL查詢更新了我的答案。我無法測試更新查詢是否有效,但更新查詢中的選擇查詢確實有效,所以希望這會幫助您開始。 – devuxer