1

このクエリがあります。

   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は正しいですか?

4

1 に答える 1

3

なぜGROUPBYが必要なのですか?重複するレコードを期待していて、別個のレコードのみが必要ですか?

いずれの場合も、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
于 2012-12-26T04:40:37.297 に答える