Mam stół wygląda tak:

 ref     doc 
 -----------
 ref001   3
 ref001   3 
 ref002   1 
 ref002   4 
 ref002   1

Chcę użyć SELECT za pomocą IF ELSE oświadczenie lub jakiekolwiek inne warunkowe oświadczenie podobnie do tego pomysłu:

SELECT MAX(ref), THEN SELECT IF MAX(doc)) OR ELSE SUM(doc)

Przykładowe dane wyjściowe:

  ref001  3
  ref002  6
-6
404notfound 17 luty 2017, 06:42

2 odpowiedzi

Najlepsza odpowiedź

Jeśli prawidłowo zrozumiałem twoje pytanie, chcesz odróżnić numer ref za pomocą doc jest następujący warunek (zgodnie z wyświetlonym wyjściem). Jeśli wszystkie numery doc są takie same dla numeru ref, a następnie uzyskać max(doc) inaczej sum(doc).

SELECT  ref,
        (CASE WHEN MAX(doc) = MIN(doc) THEN MAX(doc) ELSE SUM(doc) END) AS doc
FROM    table1
GROUP BY ref
0
Abdul Rasheed 17 luty 2017, 04:00

Możesz użyć prostych agregacji, aby to zrobić:

select ref,
    case when min(doc) = max(doc)
         then max(doc) else sum(doc) end doc_total
from t
group by ref;
1
Gurwinder Singh 17 luty 2017, 04:01