我正在嘗試執行case語句,如果某個特定項目的所有記錄都包含所有團隊的特定值,那麼該項目將按照我的看法進行分類。沿具有集合函數的SQL Case語句
case when (COUNT(team_Name) = (SUM(status = 'Completed')) then 'Complete'
case when (COUNT(team_Name) = (SUM(status = 'On Hold')) then 'On hold'
case when (COUNT(team_Name) = (SUM(status = 'Pending')) then 'Pending'
else 'In Progress' end
線的東西,所以我想獲得的(狀態=「已完成」)的總和,我相信這是一個布爾語句匹配team_names的計數。我的思考過程是,如果團隊名稱數和「完成」狀態數相同,則該項目將被視爲「完成」。
因此,選擇分組將進入項目 - >團隊 - >狀態 - > case語句的結果。我想在連接中使用上面的case語句,這樣case語句的結果集合在Project級別上或者沿着這些行級別。
但是,我的語法似乎有點關閉上面的語句,我不能讓查詢運行與此。 '='附近出現錯誤的語法錯誤。爲(狀態='完成')方面。
這甚至可能在SQL中,或者是否有我需要改變的東西。
所以有很多狀態,只有它們全部相等,那麼這被認爲是項目狀態?否則,例如,如果一個狀態是「完成」並且一個狀態是「暫停」,那麼該項目應該是「廢棄」的?你將計數與所有非空隊名的數量進行比較?不知何故,這似乎沒有多大意義。 –
事實上,如果這種情況稱爲「正在進行」,那麼這將是有意義的......我只是爲這個問題制定了隨機狀態,但在這種情況下你沒有任何意義。所有團隊將在一個項目中進行操作,因此對於項目1(如果有3個團隊),他們全部都處於「待定」狀態,則項目狀態處於「待定」狀態。如果是混合狀態,那麼我可以將其命名爲「進行中」或其他。 – user3348557
因此,每個具有狀態和團隊名稱的子項目或任務都有一條記錄,對嗎?所以在team_Name中沒有NULL,COUNT(team_Name)實際上是COUNT(*),對嗎? –