用SQL查询不同价钱商品的售出数量

用SQL查询不同价位商品的售出数量
我有一表如下:
商品名   商品编码    商品价格   售出数量
饺子       01                8                2
馒头       02                2                6
拖把       03                89              1
茶杯       04                25              4
饺子       05                8                2
我想把商品价格分为0-10、10-20、20-30、40-50···90-100来查询不同价位的商品的售出数量。请问有没有语句可以得到如此的查询结果?
------解决思路----------------------
select
   商品名,
   sum(case when 商品价格 between 0 and 10 then 售出数量 else 0 end) ,
..........
from
   tb
group by
   商品名

------解决思路----------------------
SELECT 商品编码,商品名
,SUM(CASE WHEN 商品价格<=10 THEN 售出数量 ELSE 0 END)[0-10]
,SUM(CASE WHEN 商品价格<=20 AND 商品价格>10 THEN 售出数量 ELSE 0 END)[10-20]
,SUM(CASE WHEN 商品价格<=30 AND 商品价格>20 THEN 售出数量 ELSE 0 END)[20-30]
,SUM(CASE WHEN 商品价格<=40 AND 商品价格>30 THEN 售出数量 ELSE 0 END)[30-40]
,SUM(CASE WHEN 商品价格<=50 AND 商品价格>40 THEN 售出数量 ELSE 0 END)[40-50]
,SUM(CASE WHEN 商品价格<=60 AND 商品价格>50 THEN 售出数量 ELSE 0 END)[50-60]
,SUM(CASE WHEN 商品价格<=70 AND 商品价格>60 THEN 售出数量 ELSE 0 END)[60-70]
,SUM(CASE WHEN 商品价格<=80 AND 商品价格>70 THEN 售出数量 ELSE 0 END)[70-80]
,SUM(CASE WHEN 商品价格<=90 AND 商品价格>80 THEN 售出数量 ELSE 0 END)[80-90]
,SUM(CASE WHEN 商品价格<=100 AND 商品价格>90 THEN 售出数量 ELSE 0 END)[90-100]
FROM
TB
GROUP BY 商品编码,商品名

------解决思路----------------------
WITH table1(商品价格,售出数量) AS (
    SELECT 8,2 UNION ALL
    SELECT 2,6 UNION ALL
    SELECT 89,1 UNION ALL
    SELECT 25,4 UNION ALL
    SELECT 8,2
)
,s AS (
    SELECT 商品价格/10 AS g,
           SUM(售出数量) AS 总售出数量
      FROM table1
     GROUP BY 商品价格/10
)
,n AS (
    SELECT number AS g
      FROM master..spt_values
     WHERE type = 'p'
       AND number < 10
)
    SELECT '['+Convert(varchar(11),n.g*10)+'-'+Convert(varchar(11),n.g*10+10)+']' AS 价位,
           s.总售出数量
      FROM n
 LEFT JOIN s
        ON s.g = n.g

价位                       总售出数量
------------------------- -----------
[0-10]                             10
[10-20]                          NULL
[20-30]                             4
[30-40]                          NULL
[40-50]                          NULL
[50-60]                          NULL
[60-70]                          NULL
[70-80]                          NULL
[80-90]                             1
[90-100]                         NULL

------解决思路----------------------
换一下形式而已
    SELECT '['+Convert(varchar(11),n.g*10)+'-'+Convert(varchar(11),n.g*10+10)+']' AS 价位,
           s.总售出数量
      FROM (
            SELECT number AS g
              FROM master..spt_values
             WHERE type = 'p'
               AND number < 10
           ) n
 LEFT JOIN (
            SELECT 商品价格/10 AS g,
                   SUM(售出数量) AS 总售出数量
              FROM table1
             GROUP BY 商品价格/10
           ) s
        ON s.g = n.g