【问题标题】:how to use case statement in group by如何在 group by 中使用 case 语句
【发布时间】:2011-09-01 17:25:09
【问题描述】:

我的 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

【问题讨论】:

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


【解决方案1】:

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

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;

【讨论】:

    【解决方案2】:

    我相信您可以通过两种方式进行分组:

    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
    

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

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2012-07-04
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多