有表如下编码 类型 数量 重量
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这个语句应该怎么写啊?(如何得到 类型序号(整型) 这一列呢?)
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这个语句应该怎么写啊?(如何得到 类型序号(整型) 这一列呢?)
解决方案 »
- 一个表按记录数分成多个小表,帮忙
- 给SQLserver表新加一个自动编号的列,有办法让它自已完成将所有记录增加所需的编号?
- 如何在sql 中比较 这样的值 ,跑步的时间,如 3′25〞
- 求一个SQL语句,能力有限,实在想不出来了。
- 查询分析器创建表,创建后 有提示 警告...什么意思
- 修改表的结构怎么做?
- 跪求高手解答菜鸟问题!
- 。。。。。。。。。。。。。。。。。我不明白我已经按照规则写了这个存储过程那里有错?
- 关于IIS下的ASP.NET网站和Winform客户端同时公用数据库的问题!!!急求!!!
- 求大神帮忙看下SQL语句,查询速度优化问题。
- 一个困扰我多是的sql 问题,期待高手支招!
- SQL SERVER日志会记录某条记录的修改么
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
FROM tb
没有 表里面主键由编码和序号组成的 原表如下编码 序号 类型 数量 重量
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
FROM tb t
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
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