SQL - 将某些行分组为单行而不是其他行

时间:2015-10-20 02:17:42

标签: grouping

我有一个包含以下字段的表:

Location,WeekEnded和SalesOrder

我想按位置求和,但有几个位置只有少量订单,我想将它们组合在一起作为一个位置,我似乎无法使代码正确。

Curent Results

  • 位置A 55
  • 位置B 66
  • 位置C 1
  • etc 11

我想要的是

  • 位置A 55
  • 位置B 66
  • 位置C-Z 12

目前的代码是

SELECT
       Location,
       WeekEnd,
       sum(SOCount) as 'Sales Orders'

FROM  SalesOrderHist
GROUP BY 
       Location,
       WeekEnd

任何可以帮助我的人都会永远感激。

2 个答案:

答案 0 :(得分:0)

在GROUP BY子句中使用CASE

答案 1 :(得分:0)

最终代码,以防这可能有助于某人。代码包含了相当多的内容,因此我将其缩小到仅包含重要内容。我对SQL有点新,所以可能有一种更有效的方法,但这对我有用。



SELECT
lname as Location,
WeekStart as 'Week Start',
SOCount

FROM 
(
SELECT
    WeekStart,
    SOCount,
    CASE 
       when cast(lname as varchar(40)) in ('Location A') then 'Location A'
       when cast(lname as varchar(40)) in  ('Location B') then 'Location B' 
       when cast(lname as varchar(40)) =  'Location C' then 'Location C' 
       when cast(lname as varchar(40)) not in ('Location A','Location B','Location C') then 'OTHER' 
       else cast(lname as varchar(40)) 
       end as lname
     FROM
        BDO_salesorderhist_pickeddate2
     GROUP BY 
         lname
) d

GROUP BY
lname