как использовать case case в group by - PullRequest
1 голос
/ 01 сентября 2011

В моем предложении SELECT есть следующие операторы case, также у меня есть предложение group by ... Итак, можно ли указывать UF.CONT_PID & UF.M_STATUS_CD в моем предложении GROUP BY?Мне нужно указать весь оператор CASE в GROUP BY?

 CASE WHEN UF.CONT_PID IN    
 ('04007005', '01019045','01019046') OR 
 (UF.M_STATUS_CD IN ('01', '02') 
 THEN    
 1    
 ELSE    
0    
 END

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Вместо того, чтобы повторить выражение, вы можете сделать:

SELECT col /*, other cols */ FROM
(
  SELECT col = CASE WHEN /*...long-winded expression...*/ 
    THEN 1 ELSE 0 END /*, other cols */
  FROM dbo.table
) AS x
GROUP BY col;
0 голосов
/ 01 сентября 2011

Я считаю, что вы можете группировать двумя способами:

GROUP BY UF.CONT_PID, UF.M_STATUS_CD

ИЛИ

GROUP BY CASE WHEN UF.CONT_PID IN ('04007005', '01019045','01019046') OR (UF.M_STATUS_CD IN ('01', '02') THEN 1 ELSE 0 END

Но имейте в виду, что это очень разные группировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...