2012-12-26 64 views
1

我有這個查詢。sql server:組中的case 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是否正確?

回答

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 
+0

yup.i希望distinct.Ok.Noted。 –

+0

這個工作適合你嗎?如果是這樣,你能接受這個答案嗎? – 2012-12-28 21:49:04