sql server:group by中的case语句

时间:2012-12-26 04:33:33

标签: sql sql-server group-by case

我有这个问题。

   Select a."AreaBlkType",Case a."AreaBlkType"
when 3 then 'Others'
else ( case a."CropType"
        when 1 then 'Oil Palm'
        when 2 then 'Rubber'
        else 'Other Crop'
        end
         )
end [Crop] 
    from Table1 a 
    group by 
    case a."AreaBlkType"
when 3 then 'Others'
else ( case a."CropType"
        when '1' then 'Oil Palm'
        when '2' then 'Rubber'
        when '3' then 'Other Crop'
        end )
end, 
a."AreaBlkType" 

但是我得到了一个错误。 :CropType'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句

我的sql是否正确?

1 个答案:

答案 0 :(得分:3)

为什么需要GROUP BY?您是否期望重复记录并且只想要不同的记录?

在任何一种情况下,您的GROUP BY必须包含相同的CASE语句,因此:

Select
   Case a."AreaBlkType"
      when 3 then 'Others'
      else
         case a."CropType"
            when 1 then 'Oil Palm'
            when 2 then 'Rubber'
            else 'Other Crop'
         end
   end [Crop] 
 from Table1 a 
group by 
   Case a."AreaBlkType"
      when 3 then 'Others'
      else
         case a."CropType"
            when 1 then 'Oil Palm'
            when 2 then 'Rubber'
            else 'Other Crop'
         end
   end