有表如下编码   类型  数量  重量
X001      A        1      3.01
X001      A        1      2.06
X011      A        1      3.01
X001      B        1      2.00
X011      B        1      1.03
X001      B        1      4.61
X011      B        2      3.03
X001      B        1      2.11用查询语句得到如下结果编码   类型   类型序号(整型)  数量  重量
X001       A           1            1       3.01
X001       A           2            1       2.01
X001       B           1            1       2.00
X001       B           2            1       4.61
X001       B           3            1       2.11
X011       A           1            1       3.01
X011       B           1            1       1.03
X011       B           2            2       3.03这个语句应该怎么写啊?(如何得到 类型序号(整型) 这一列呢?)

解决方案 »

  1.   


    if OBJECT_ID('tb') is not null
    drop table tb
    go
    create table tb (编码 varchar(10),类型 varchar(2),数量 int,重量 numeric(5,2) )
    insert into tb
    select 'X001', 'A', 1, 3.01 union all
    select 'X001', 'A', 1, 2.06 union all
    select 'X011', 'A', 1, 3.01 union all
    select 'X001', 'B', 1, 2.00 union all
    select 'X011', 'B', 1, 1.03 union all
    select 'X001', 'B', 1, 4.61 union all
    select 'X011', 'B', 2, 3.03 union all
    select 'X001', 'B', 1, 2.11select 编码, 类型, [类型序号(整型)]=row_number() over(partition by 编码, 类型 order by getdate()),数量,重量
    from tb编码 类型 类型序号(整型) 数量 重量
    X001 A 1 1 3.01
    X001 A 2 1 2.06
    X001 B 1 1 2.00
    X001 B 2 1 4.61
    X001 B 3 1 2.11
    X011 A 1 1 3.01
    X011 B 1 1 1.03
    X011 B 2 2 3.03
      

  2.   

    SELECT 编码,类型,类型序号=ROW_NUMBER()OVER(PARTITION BY 编码,类型 ORDER BY @@spid),数量,重量
    FROM tb
      

  3.   

    jaydom:row_number()  为何啊?为什么提示 'row_number' 不是可以识别的 函数名。
      

  4.   

    jaydom:在 2000的数据库有什么办法吗?
      

  5.   


    没有 表里面主键由编码和序号组成的  原表如下编码 序号   类型   数量  重量
    X001 0        A       1      3.01
    X001 1        A       1      2.06
    X011 0        A       1      3.01
    X001 2        B       1      2.00
    X011 1        B       1      1.03
    X001 3        B       1      4.61
    X011 2        B       2      3.03
    X001 4        B       1      2.11
      

  6.   

    SELECT 编码,类型,类型序号=(SELECT COUNT(1) FROM tb WHERE 编码=t.编码 AND 类型=t.类型 AND (数量>t.数量 OR 数量=t.数量 AND 重量>t.重量)),数量,重量
    FROM tb t
      

  7.   


    select rn=IDENTITY(int,1,1),*  into #t from tb 
    select 编码, 类型, [类型序号(整型)]=(select count(1)+1 
                                         from #t 
                                         where 编码=a.编码 and 类型=a.类型  and rn<a.rn ),数量,重量
    from #t a编码 类型 类型序号(整型) 数量 重量
    X001 A 1 1 3.01
    X001 A 2 1 2.06
    X011 A 1 1 3.01
    X001 B 1 1 2.00
    X011 B 1 1 1.03
    X001 B 2 1 4.61
    X011 B 2 2 3.03
    X001 B 3 1 2.11
      

  8.   


    SELECT 编码,类型,类型序号=(SELECT COUNT(1)+1 FROM tb WHERE 编码=t.编码 AND 类型=t.类型 AND (数量>t.数量 OR 数量=t.数量 AND 重量>t.重量)),数量,重量
    FROM tb t
    编码 类型 类型序号 数量 重量
    X001 A 1 1 3.01
    X001 A 2 1 2.06
    X011 A 1 1 3.01
    X001 B 3 1 2.00
    X011 B 2 1 1.03
    X001 B 1 1 4.61
    X011 B 1 2 3.03
    X001 B 2 1 2.11