2011-04-29 62 views

回答

3

推理是這樣

  • 子查詢中,選擇所有專案編號的有狀態= 21
  • 在外部選擇,只保留那些專案編號的,只有有一個狀態= 21使用HAVING子句

SQL語句

SELECT ProjectID 
FROM table t1 
     INNER JOIN (
      SELECT ProjectID 
      FROM table 
      WHERE state = 21 
     ) t2 ON t2.ProjectID = t1.ProjectID 
GROUP BY 
     ProjectID 
HAVING COUNT(*) = 1   
+0

謝謝你的解釋。 – 2011-04-29 14:15:21

1
select ProjectID,count(State) from table group by ProjectID having count(state)=1; 
+0

你是第一個給出答案的人,所以我將你的標記標記爲已接受。 – 2011-04-29 14:15:06

+0

@dev - 它做你需要什麼?那樣的話,我誤解了你的問題。 – 2011-04-29 14:17:08

2

由方式選擇所有與單個狀態值,該值(「值」)是項目,等於指定之一:

SELECT ProjectID 
FROM  atable 
GROUP BY ProjectID 
HAVING COUNT(*) = 1 
    AND MAX(State) = @State 

您還可以使用MINSUM,或AVG具有相同EFF檢查的State值等(因爲它應該是唯一的價值)。