2013-10-22 65 views
0

我試圖在postgresql中運行此查詢但出現此錯誤:「錯誤:集合函數調用可能不能嵌套」。我不確定這是什麼問題或解決方案。集合函數調用可能不能嵌套錯誤

這裏是我的查詢:

select a.KEY_NBR, a.MAIN_ID 
     , 
      case 
       when a.KEY_NBR = a.MAIN_ID 
        then 'Don''t Use' 
       when a.count = MAX(a.count) over(partition by a.KEY_NBR) 
        then 'Good' 
       else 'Bad' 
      end [flag] 
    from MYTABLE a 
+0

'MAX'是一個聚合函數,你可能希望'SELECT'語句返回'MAX(a.count)'的結果。 –

+1

您使用的是什麼版本的PostgreSQL?在9.2測試過類似的查詢 - 它工作正常。 – alexius

+0

我實際上使用Workbench:\t Aginity Workbench for Netezza 4.0.998.20231,它使用postgresql – moe

回答

1

您的查詢看起來不錯,應該工作。也許你使用的版本有一些限制。試試這個變種:

WITH a AS 
    (SELECT key_nbr, main_id, count, 
      MAX(count) OVER (PARTITION BY key_nbr) AS max_count 
    FROM mytable 
) 
SELECT a.key_nbr, a.main_id, 
     CASE WHEN a.key_nbr = a.main_id 
       THEN 'Don''t Use' 
      WHEN a.count = max_count 
       THEN 'Good' 
      ELSE 'Bad' 
     END AS flag 
FROM a ; 
+0

我收到此錯誤:無法找到列「COUNT」。 thnx – moe

+0

您沒有名爲'count'的列嗎?你的代碼表明你有。 –