有一个数据库商品 数量汽车001 15
--------------
汽车002 10
--------------
汽车003 18
--------------
飞机001 25
--------------
飞机002 15
--------------
飞机003 5
--------------如果我想把上面的数据变成下面的形式应该怎么做商品 数量 数量多少的排位汽车001 15 2
----------------------------------
汽车002 10 3
----------------------------------
汽车003 18 1
----------------------------------
飞机001 25 1
----------------------------------
飞机002 15 2
----------------------------------
飞机003 5 3
----------------------------------请高手指点,谢谢了。
--------------
汽车002 10
--------------
汽车003 18
--------------
飞机001 25
--------------
飞机002 15
--------------
飞机003 5
--------------如果我想把上面的数据变成下面的形式应该怎么做商品 数量 数量多少的排位汽车001 15 2
----------------------------------
汽车002 10 3
----------------------------------
汽车003 18 1
----------------------------------
飞机001 25 1
----------------------------------
飞机002 15 2
----------------------------------
飞机003 5 3
----------------------------------请高手指点,谢谢了。
解决方案 »
- 只知道 这个字段的值,不知道表名和字段,求找出表明和字段
- sql server 2008用户权限设置 大家帮帮我,郁闷死了!!
- 请教一句SQL语句
- 我写的存储过程为什么会执行了半个多小时还没执行完?应该是循环的问题可是我没检查出来,希望大家帮我解决一下
- 还原数据库后,数据库图标上显示Restoring,如何解决?
- 高分请教 VC6.0 ADO
- SQL SERVER 的古怪錯誤,求助!
- 为什么SQLDMO只能列出服务器文件夹,而不能列出文件?怎样才能实现列出文件列表?
- 恳求赐教:分别在两台电脑上的两个MSSQL2000数据库可不可以用SQL脚本的方法实现数据传输?
- 如何给系统表加触发器?
- SQL可不可以动态修改表的名称?
- sql 查询问题
INSERT @a SELECT '汽车001', 15
union all select '汽车002', 10
union all select '汽车003', 18
union all select '飞机001', 25
union all select '飞机002', 15
union all select '飞机003', 5 SELECT *,排位=(select COUNT(1)+1 from @a where left(商品,2)=left(a.商品,2) and 数量>a.数量) FROM @a a--result
/*商品 数量 排位
-------------------- ----------- -----------
汽车001 15 2
汽车002 10 3
汽车003 18 1
飞机001 25 1
飞机002 15 2
飞机003 5 3(所影响的行数为 6 行)*/
INSERT @a SELECT '汽车001', 15
union all select '汽车002', 10
union all select '汽车003', 18
union all select '飞机001', 25
union all select '飞机002', 15
union all select '飞机003', 5 select 商品,数量,rank() over(PARTITION BY left(商品,2) order by 数量 desc) as 排位 from @a
/*
商品 数量 排位
-------------------- ----------- --------------------
飞机001 25 1
飞机002 15 2
飞机003 5 3
汽车003 18 1
汽车001 15 2
汽车002 10 3
*/
DECLARE @a TABLE(商品 varchar(20),数量 int)
INSERT @a SELECT '汽車001', 15
union all select '汽車002', 10
union all select '汽車003', 18
union all select '飛機001', 25
union all select '飛機002', 15
union all select '飛機003', 5
select * from @aselect *,rank()over (partition by left(商品,2) order by 数量)[order] from @a
------------------------------------------
商品 数量 order
----- ----- ------
汽車002 10 1
汽車001 15 2
汽車003 18 3
飛機003 5 1
飛機002 15 2
飛機001 25 3
INSERT tb SELECT '汽车001', 15
union all select '汽车002', 10
union all select '汽车003', 18
union all select '飞机001', 25
union all select '飞机002', 15
union all select '飞机003', 5
goselect m.商品, m.数量 , 数量多少的排位 = (select count(1) from
(
select left(商品,PATINDEX('%[^吖-做]%',商品)-1) 商品_new ,商品, 数量 from tb
) n where n.商品_new = m.商品_new and n.数量 > m.数量
) + 1 from
(
select left(商品,PATINDEX('%[^吖-做]%',商品)-1) 商品_new ,商品, 数量 from tb
) mdrop table tb/*
商品 数量 数量多少的排位
-------------------- ----------- -----------
汽车001 15 2
汽车002 10 3
汽车003 18 1
飞机001 25 1
飞机002 15 2
飞机003 5 3(所影响的行数为 6 行)
*/
declare @数据库 table (商品 varchar(10),数量 int)
insert into @数据库 select '汽车001',15
union all select '汽车002',10
union all select '汽车003',18
union all select '飞机001',25
union all select '飞机002',15
union all select '飞机003',5
select * ,排拉= (select COUNT(*) from @数据库 where LEFT(商品,2)=LEFT(a.商品,2) and 数量<=a.数量) from @数据库 a
商品 数量 排拉
---------- ----------- -----------
汽车001 15 2
汽车002 10 1
汽车003 18 3
飞机001 25 3
飞机002 15 2
飞机003 5 1(6 行受影响)