读书人

想对农田字段进行编号请前辈指点上s

发布时间: 2013-01-02 13:08:45 作者: rapoo

想对农田字段进行编号,请前辈指点下sql语句?先感谢了!
想通过sql语句运算后如下表,对对一个村、同一个组、同一个农户的农田进行编号,编号规则就是在 农户姓名后加上1 2 3。


农户表 结构如下:

村名称组名称农户姓名农田编号
天天村第一组张三
天天村第一组张三
天天村第一组张三
天天村第一组李四
天天村第一组李四
天天村第一组李四


想得到的结果:

村名称组名称农户姓名农田编号
天天村第一组张三张三1
天天村第一组张三张三2
天天村第一组张三张三3
天天村第一组李四李四1
天天村第一组李四李四2
天天村第一组李四李四3

[解决办法]
with 农田(村名称,组名称,农户姓名)
as(
select '天天村','第一组','张三' union all
select '天天村','第一组','张三' union all
select '天天村','第一组','张三' union all
select '天天村','第一组','李四' union all
select '天天村','第一组','李四' union all
select '天天村','第一组','李四'),
source as(
select *,rowindex=row_number()over(partition by 农户姓名 order by getdate()) from 农田
)
select 村名称,组名称,农户姓名,农户姓名+rtrim(rowindex) 农田编号 from source
[解决办法]


------解决方案--------------------


Create table 表1 (村名称 char(20),组名称 char(20),农户姓名 char(20) )
Insert 表1
select '天天村','第一组','张三' union all
select '天天村','第一组','张三' union all
select '天天村','第一组','张三' union all
select '天天村','第一组','李四' union all
select '天天村','第一组','李四' union all
select '天天村','第一组','李四'


select 村名称,组名称,农户姓名,ROW_NUMBER()
over(partition by 农户姓名 order by 农户姓名) as 农田编号 from 表1


村名称 组名称 农户姓名 农田编号
--------- ------------ --------------- --------------------
天天村 第一组 李四 1
天天村 第一组 李四 2
天天村 第一组 李四 3
天天村 第一组 张三 1
天天村 第一组 张三 2
天天村 第一组 张三 3

(6 行受影响)

[解决办法]
select 村名称,组名称,农户姓名,(replace(农户姓名,' ','')+convert(varchar(10),ROW_NUMBER() 
over(partition by 农户姓名 order by 农户姓名))) as 农田编号 from 表1

读书人网 >SQL Server

热点推荐