有一张表,如下表(receiveorder)想创建一个视图view_order,但搞不定,请高手帮忙。收单明细表(receiveorder)------用于记录每一客户每一物料的订单数量和交货日期的信息, 其中,同一客户、订单号和流水单号可以有多个物料和不同日期的订单 
id 客户名称 客户编号 订单编号 流水单号 操作员 收单日期 备注 物料名称 物料编码 订单数量 单位  交货日期
 1    aaa      1      a0001  200701010001 cc   2007-1-1 null  k2548   1001     2008     pc   2007-1-20  
 2    aaa      1      a0001  200701010001 cc   2007-1-1 null  k2547   1002     800      pc   2007-1-12 
 3    aaa      1      a0001  200701010001 cc   2007-1-1 null  k2546   1003     200      pc   2007-1-15 
 4    bbb      2      b0001  200701050001 dd   2007-1-3 null  z2001   6001     1000     pc   2007-1-20 
 5    bbb      2      b0001  200701050001 dd   2007-1-3 null  z2002   6002     800      pc   2007-1-12 
 6    aaa      1      a0002  200701030001 cc   2007-1-3 null  k2548   1001     200      pc   2007-2-25  
.
.
.
.变成按月划分的视图(view_order)----可以查看每一客户每一物料(若有订单)某一个月内具体某日的订单数量及其本物该物料的订单总和
客户名称 客户编号 物料名称 物料编码  单位 1日 2日 …12日…15日  …20日…25日… 31日     总 计    月份
 aaa        1        k2548    1001    pc   0   0      0     0      2008  200      0     2208     2007-01
 aaa        1        k2547    1002    pc   0   0      800   0       0    0        0      800     2007-01
 aaa        1        k2546    1003    pc   0   0       0   200      0    0        0      200     2007-01
 bbb        2        z2001    6001    pc   0   0      0     0      1000  0        0      1000    2007-01
 bbb        2        z2002    6002    pc   0   0      800   0       0    0        0      800     2007-01
 aaa        1        k2548    1001    pc   0   0       0    0       0    200      0      200     2007-02
.
.
.
.

解决方案 »

  1.   

    select  客户名称,客户编号,物料名称,物料编码,单位,
    [1日]=case when day(交货日期)=1 then 订单数量 else 0 end, 
    [2日]=case when day(交货日期)=2 then 订单数量 else 0 end, 
    [3日]=case when day(交货日期)=3 then 订单数量 else 0 end, 
    [4日]=case when day(交货日期)=4 then 订单数量 else 0 end, 
    [5日]=case when day(交货日期)=5 then 订单数量 else 0 end, 
    [6日]=case when day(交货日期)=6 then 订单数量 else 0 end, 
    [7日]=case when day(交货日期)=7 then 订单数量 else 0 end, 
    [8日]=case when day(交货日期)=8 then 订单数量 else 0 end, 
    [9日]=case when day(交货日期)=9 then 订单数量 else 0 end, 
    [10日]=case when day(交货日期)=10 then 订单数量 else 0 end, 
    [11日]=case when day(交货日期)=11 then 订单数量 else 0 end, 
    [12日]=case when day(交货日期)=12 then 订单数量 else 0 end, 
    [13日]=case when day(交货日期)=13 then 订单数量 else 0 end, 
    [14日]=case when day(交货日期)=14 then 订单数量 else 0 end, 
    [15日]=case when day(交货日期)=15 then 订单数量 else 0 end,
    [16日]=case when day(交货日期)=16 then 订单数量 else 0 end, 
    [17日]=case when day(交货日期)=17 then 订单数量 else 0 end, 
    [18日]=case when day(交货日期)=18 then 订单数量 else 0 end, 
    [19日]=case when day(交货日期)=19 then 订单数量 else 0 end, 
    [20日]=case when day(交货日期)=20 then 订单数量 else 0 end, 
    [21日]=case when day(交货日期)=21 then 订单数量 else 0 end, 
    [22日]=case when day(交货日期)=22 then 订单数量 else 0 end, 
    [23日]=case when day(交货日期)=23 then 订单数量 else 0 end, 
    [24日]=case when day(交货日期)=24 then 订单数量 else 0 end, 
    [25日]=case when day(交货日期)=25 then 订单数量 else 0 end, 
    [26日]=case when day(交货日期)=26 then 订单数量 else 0 end, 
    [27日]=case when day(交货日期)=27 then 订单数量 else 0 end, 
    [28日]=case when day(交货日期)=28 then 订单数量 else 0 end, 
    [29日]=case when day(交货日期)=29 then 订单数量 else 0 end, 
    [30日]=case when day(交货日期)=30 then 订单数量 else 0 end,
    [31日]=case when day(交货日期)=31 then 订单数量 else 0 end,
    [总 计]=订单数量,
    [月份]=convert(char(7),交货日期,21)
    from t1
      

  2.   

    create table t1(id int,客户名称 varchar(10),客户编号 int,订单编号 varchar(10),流水单号 varchar(20),操作员 varchar(10),
    收单日期 datetime,备注 varchar(100),物料名称 varchar(10),物料编码 varchar(10),订单数量 int,单位 varchar(10),交货日期 datetime)
    insert t1
    select 1,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2548','1001',2008,'pc','2007-1-20' union 
    select 2,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2547','1002',800,'pc','2007-1-12' union 
    select 3,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2546','1003',200,'pc','2007-1-15' union 
    select 4,'bbb',2,'b0001','200701050001','dd','2007-1-3',null,'z2001','6001',1000,'pc','2007-1-20' union 
    select 5,'bbb',2,'b0001','200701050001','dd','2007-1-3',null,'z2002','6002',800,'pc','2007-1-12' union 
    select 6,'aaa',1,'a0002','200701030001','cc','2007-1-1',null,'k2548','1001',200,'pc','2007-2-25'select  客户名称,客户编号,物料名称,物料编码,单位,
    [1日]=case when day(交货日期)=1 then 订单数量 else 0 end, 
    [2日]=case when day(交货日期)=2 then 订单数量 else 0 end, 
    [3日]=case when day(交货日期)=3 then 订单数量 else 0 end, 
    [4日]=case when day(交货日期)=4 then 订单数量 else 0 end, 
    [5日]=case when day(交货日期)=5 then 订单数量 else 0 end, 
    [6日]=case when day(交货日期)=6 then 订单数量 else 0 end, 
    [7日]=case when day(交货日期)=7 then 订单数量 else 0 end, 
    [8日]=case when day(交货日期)=8 then 订单数量 else 0 end, 
    [9日]=case when day(交货日期)=9 then 订单数量 else 0 end, 
    [10日]=case when day(交货日期)=10 then 订单数量 else 0 end, 
    [11日]=case when day(交货日期)=11 then 订单数量 else 0 end, 
    [12日]=case when day(交货日期)=12 then 订单数量 else 0 end, 
    [13日]=case when day(交货日期)=13 then 订单数量 else 0 end, 
    [14日]=case when day(交货日期)=14 then 订单数量 else 0 end, 
    [15日]=case when day(交货日期)=15 then 订单数量 else 0 end,
    [16日]=case when day(交货日期)=16 then 订单数量 else 0 end, 
    [17日]=case when day(交货日期)=17 then 订单数量 else 0 end, 
    [18日]=case when day(交货日期)=18 then 订单数量 else 0 end, 
    [19日]=case when day(交货日期)=19 then 订单数量 else 0 end, 
    [20日]=case when day(交货日期)=20 then 订单数量 else 0 end, 
    [21日]=case when day(交货日期)=21 then 订单数量 else 0 end, 
    [22日]=case when day(交货日期)=22 then 订单数量 else 0 end, 
    [23日]=case when day(交货日期)=23 then 订单数量 else 0 end, 
    [24日]=case when day(交货日期)=24 then 订单数量 else 0 end, 
    [25日]=case when day(交货日期)=25 then 订单数量 else 0 end, 
    [26日]=case when day(交货日期)=26 then 订单数量 else 0 end, 
    [27日]=case when day(交货日期)=27 then 订单数量 else 0 end, 
    [28日]=case when day(交货日期)=28 then 订单数量 else 0 end, 
    [29日]=case when day(交货日期)=29 then 订单数量 else 0 end, 
    [30日]=case when day(交货日期)=30 then 订单数量 else 0 end,
    [31日]=case when day(交货日期)=31 then 订单数量 else 0 end,
    [总 计]=订单数量,
    [月份]=convert(char(7),交货日期,21)
    from t1
      

  3.   

    create table t1(id int,客户名称 varchar(10),客户编号 int,订单编号 varchar(10),流水单号 varchar(20),操作员 varchar(10),
    收单日期 datetime,备注 varchar(100),物料名称 varchar(10),物料编码 varchar(10),订单数量 int,单位 varchar(10),交货日期 datetime)
    insert t1
    select 1,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2548','1001',2008,'pc','2007-1-20' union 
    select 2,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2547','1002',800,'pc','2007-1-12' union 
    select 3,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2546','1003',200,'pc','2007-1-15' union 
    select 4,'bbb',2,'b0001','200701050001','dd','2007-1-3',null,'z2001','6001',1000,'pc','2007-1-20' union 
    select 5,'bbb',2,'b0001','200701050001','dd','2007-1-3',null,'z2002','6002',800,'pc','2007-1-12' union 
    select 6,'aaa',1,'a0002','200701030001','cc','2007-1-1',null,'k2548','1001',200,'pc','2007-2-25' union 
    select 7,'aaa',1,'a0001','200701010001','cc','2007-1-1',null,'k2548','1001',300,'pc','2007-1-22'select  客户名称,客户编号,物料名称,物料编码,单位,
    [1日] =sum(case when day(交货日期)=1 then 订单数量 else 0 end), 
    [2日] =sum(case when day(交货日期)=2 then 订单数量 else 0 end), 
    [3日] =sum(case when day(交货日期)=3 then 订单数量 else 0 end), 
    [4日] =sum(case when day(交货日期)=4 then 订单数量 else 0 end), 
    [5日] =sum(case when day(交货日期)=5 then 订单数量 else 0 end), 
    [6日] =sum(case when day(交货日期)=6 then 订单数量 else 0 end), 
    [7日] =sum(case when day(交货日期)=7 then 订单数量 else 0 end), 
    [8日] =sum(case when day(交货日期)=8 then 订单数量 else 0 end), 
    [9日] =sum(case when day(交货日期)=9 then 订单数量 else 0 end), 
    [10日]=sum(case when day(交货日期)=10 then 订单数量 else 0 end), 
    [11日]=sum(case when day(交货日期)=11 then 订单数量 else 0 end), 
    [12日]=sum(case when day(交货日期)=12 then 订单数量 else 0 end), 
    [13日]=sum(case when day(交货日期)=13 then 订单数量 else 0 end), 
    [14日]=sum(case when day(交货日期)=14 then 订单数量 else 0 end), 
    [15日]=sum(case when day(交货日期)=15 then 订单数量 else 0 end),
    [16日]=sum(case when day(交货日期)=16 then 订单数量 else 0 end), 
    [17日]=sum(case when day(交货日期)=17 then 订单数量 else 0 end), 
    [18日]=sum(case when day(交货日期)=18 then 订单数量 else 0 end), 
    [19日]=sum(case when day(交货日期)=19 then 订单数量 else 0 end), 
    [20日]=sum(case when day(交货日期)=20 then 订单数量 else 0 end), 
    [21日]=sum(case when day(交货日期)=21 then 订单数量 else 0 end), 
    [22日]=sum(case when day(交货日期)=22 then 订单数量 else 0 end), 
    [23日]=sum(case when day(交货日期)=23 then 订单数量 else 0 end), 
    [24日]=sum(case when day(交货日期)=24 then 订单数量 else 0 end), 
    [25日]=sum(case when day(交货日期)=25 then 订单数量 else 0 end), 
    [26日]=sum(case when day(交货日期)=26 then 订单数量 else 0 end), 
    [27日]=sum(case when day(交货日期)=27 then 订单数量 else 0 end), 
    [28日]=sum(case when day(交货日期)=28 then 订单数量 else 0 end), 
    [29日]=sum(case when day(交货日期)=29 then 订单数量 else 0 end), 
    [30日]=sum(case when day(交货日期)=30 then 订单数量 else 0 end),
    [31日]=sum(case when day(交货日期)=31 then 订单数量 else 0 end),
    [总 计]=sum(订单数量),
    [月份]=convert(char(7),交货日期,21)
    from t1
    group by 客户名称,客户编号,物料名称,物料编码,单位,convert(char(7),交货日期,21)
    order by convert(char(7),交货日期,21)
    drop table t1
      

  4.   

    再次多谢leo_lesley(leo),我把临表t1直接改成了收单明细表(receiveorder)用你的第三次回复的语句创建视图,OK了,我昨天搞了一天都搞不好,真的是多谢你!结贴!