当前位置: 代码迷 >> Sql Server >> 可怕的统计汇总之二,该怎么解决
  详细解决方案

可怕的统计汇总之二,该怎么解决

热度:39   发布时间:2016-04-27 20:05:15.0
可怕的统计汇总之二
create   table   tb_car_sale(
CarID   varchar(20)   primary   key,
TypID   int,
Color   varchar(10),
SellDate   datetime)

insert   tb_car_sale   select   '1001 ',1, '皓白 ', '2007-1-9 '
union   all   select   '1002 ',2, '银 ', '2007-7-30 '
union   all   select   '1003 ',1, '皓白 ', '2007-4-13 '
union   all   select   '1004 ',1, '皓白 ', '2007-9-21 '
union   all   select   '1005 ',4, '碳黑 ', '2007-2-17 '
union   all   select   '1006 ',4, '水晶蓝 ', '2007-3-29 '
union   all   select   '1007 ',7, '水晶蓝 ', '2007-7-9 '

---要统计的车型
create   table   tb_stat_type(
TypID   int   primary   key,
TypNam   varchar(20))

insert   tb_stat_type   select   1, 'L4 '
union   all   select   2, 'L4+ '
union   all   select   3, 'GL3.5 '
union   all   select   4, 'GL2.5 '

--要统计的颜色
create   table   tb_stat_color(
ColorID   int   primary   key,
ColorNam   varchar(10))

insert   tb_stat_color   select   1, '白 '
union   all   select   2, '银 '
union   all   select   3, '黑 '
union   all   select   4, '蓝 '

说明:1、销车表(tb_car_sale)里的车型、颜色可以是tb_stat_type、tb_stat_color之外的车型和颜色
2、只统计tb_stat_type、tb_stat_color中要求的车型和颜色,其中颜色用like规则匹配,比如水晶蓝=蓝
3、要统计某一年(输入参数)中每个星期每款车型每种颜色的销售数量,期望结果如下:
(除了时间、合计以外,应该还有16列:4款车型和4种颜色的组合为16列)  
        时间                           L4白     L4银     L4黑     L4蓝   L4+白     L4+银     L4+黑     L4+蓝...合计    
2007-1-1-2007-1-7
2007-1-8-2007-1-14                                     统计数据略....
2007-1-15-2007-1-21
2007-1-22-2007-1-28
要统计的年份的所有星期,
以下星期省略,
最后一行是 "总计 "!!!!

4.可以稍微变通...但大概的结构不能变

------解决方案--------------------
太麻烦,不想写

送辆车我就写了,哪怕是最小的那种

------解决方案--------------------
呵呵,天空老大甩大牌
------解决方案--------------------
看题目比写代码还累....................
------解决方案--------------------

------解决方案--------------------
好象是作业题啊,建议用企业管理器自己连线吧,然后手动改下线的条件
------解决方案--------------------
结果用pb 写的话应该挺简单~
------解决方案--------------------
看起来确实很头痛
太多了~~~
------解决方案--------------------
可以分别写四个日期的 然后union 到一起,统计每一个的时候
Count(case when color = ' ' and typeNam= ' ' then CarID)
  相关解决方案