如何在group by中使用case语句

时间:2011-09-01 17:25:10

标签: sql sql-server sql-server-2008 tsql case

我的SELECT子句中有以下case语句,也是我  有一个分组......          那么,可以指定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 个答案:

答案 0 :(得分:2)

而不是重复表达,你可以这样做:

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;

答案 1 :(得分:0)

我相信你可以通过两种方式分组:

GROUP BY UF.CONT_PID, UF.M_STATUS_CD

OR

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

但请记住,这些是非常不同的分组。