如何在现有的表中利用年月生成一个顺序号?

stadong 2004-05-02 03:41:05
现在表中有日期字段rq,怎么样才能依据这个日期字段生成一个顺序号RK04040001,这个顺序号是按年月更新的!
...全文
138 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
--如果你的表中rkrq无序,而且可能重复的话,那你就在你的表中加一个标识字段来处理(下面假设你的标识字段名为id,当然,如果表中有主键,可以直接用主键代替id)

update rk_bak set rkdh='RK'+CONVERT(char(4),rkrq,12)
+right(10000+(
select count(*) from rk_bak
where datediff(month,rkrq,a.rkrq)=0 and rkrq<a.rkrq
or(rkrq=a.rkrq and id<=a.id)
),4)
from rk_bak a
zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
--测试

--测试数据
create table rk_bak(rkrq datetime,rkdh char(10))
insert rk_bak(rkrq)
select '1933/04/22'
union all select '1933/04/22'
union all select '2000/01/01'
union all select '2001/04/03'
union all select '2001/04/03'
union all select '2001/04/03'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/04'
union all select '2001/04/05'
union all select '2001/04/05'
union all select '2001/04/05'
union all select '2001/04/05'
union all select '2001/04/06'
go

--更新处理
declare @rq datetime,@i int
update rk_bak set @i=case datediff(month,rkrq,@rq) when 0 then @i+1 else 10001 end
,rkdh='RK'+CONVERT(char(4),rkrq,12)+right(@i,4)
,@rq=rkrq
go

--显示处理结果
select * from rk_bak
go

--删除测试
drop table rk_bak

/*--测试结果

rkrq rkdh
------------------------------------------------------ ----------
1933-04-22 00:00:00.000 RK33040001
1933-04-22 00:00:00.000 RK33040002
2000-01-01 00:00:00.000 RK00010001
2001-04-03 00:00:00.000 RK01040001
2001-04-03 00:00:00.000 RK01040002
2001-04-03 00:00:00.000 RK01040003
2001-04-04 00:00:00.000 RK01040004
2001-04-04 00:00:00.000 RK01040005
2001-04-04 00:00:00.000 RK01040006
2001-04-04 00:00:00.000 RK01040007
2001-04-04 00:00:00.000 RK01040008
2001-04-04 00:00:00.000 RK01040009
2001-04-04 00:00:00.000 RK01040010
2001-04-04 00:00:00.000 RK01040011
2001-04-05 00:00:00.000 RK01040012
2001-04-05 00:00:00.000 RK01040013
2001-04-05 00:00:00.000 RK01040014
2001-04-05 00:00:00.000 RK01040015
2001-04-06 00:00:00.000 RK01040016

(所影响的行数为 19 行)
--*/
stadong 2004-05-02
  • 打赏
  • 举报
回复
谢谢!xiaoliaoyun(流浪的云),我刚学一点sql,不好意思,看不明白你给的例子是什么意思?
xiaoliaoyun 2004-05-02
  • 打赏
  • 举报
回复
--使用SQLSERVER自带的例子数据库northwind
use northwind
go
select xuhao='PK'+convert(char(4),orderdate,12)+
right('0000'+cast((select count(*) from orders a where a.orderID<=b.orderID and datediff(month,a.orderDate,b.orderDate)=0)as varchar(4)),4),
orderID,orderDate from orders b
zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
--生成格式为RK04040001的序号,至于你说的序号不对,得举例说明了:

UPDATE 表 SET dh='RK'+convert(char(4),getdate(),12)+right(10000
+(SELECT COUNT(*) FROM 表 WHERE datediff(month,a.rq,rq)=0 AND rq <= a.rq),4)
from 表 a
zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
你举例说明你要什么格式?

序号不对是什么意思? 不是按年月相同的按rq从小到大生成序号吗?

zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
UPDATE 表
SET dh =
(SELECT COUNT(*)
FROM 表
WHERE datediff(month, a.rq, rq) = 0 AND rq <= a.rq)
from 表 a
stadong 2004-05-02
  • 打赏
  • 举报
回复
那个序号不对啊?格式也不对!是不是分少了?
liang922 2004-05-02
  • 打赏
  • 举报
回复
学习
stadong 2004-05-02
  • 打赏
  • 举报
回复
UPDATE 表
SET dh =
(SELECT COUNT(*)
FROM 表
WHERE datediff(month, a.rq, rq) = 0 AND rq <= a.rq)
是这样的吗?提示错误啊?
stadong 2004-05-02
  • 打赏
  • 举报
回复
谢谢!我对sql了解太少,如果我想把表中的一个字段的内容用序号写进去应该怎么写呢?
zjcxc 元老 2004-05-02
  • 打赏
  • 举报
回复
select 序号=(select count(*) from 表 where datediff(month,a.rq,rq)=0 and rq<=a.rq),*
from 表 a
stadong 2004-05-02
  • 打赏
  • 举报
回复
是不是我的问题没说清楚呢?现在表中有一万条记录,怎么样做才可以呢?这个顺序号的格式如我上面所说,字符+年月+顺序号,每月从一开始。
内容概要:该文档为一段用于Google Earth Engine(GEE)平台的JavaScript代码脚本,旨在对研究区域(AOI)内的Landsat 8卫星影像进行土地利用/土地覆盖(LULC)分类。脚本首先筛选2024云量低于10%的Landsat 8 Level-2地表反射率影像,构建中值合成影像并应用缩放因子校正。随后,基于预先定义的水体(Water)和植被(Vegetation)样本点,合并训练样本并提取影像对应波段数据,采用随机森林分类器(smileRandomForest)对影像进行监督分类。最后,通过划分训练集与测试集,输出混淆矩阵、总体分类精度和Kappa系数,完成分类结果的精度评估。; 适合人群:具备遥感图像处理基础知识的科研人员、地理信息系统(GIS)技术人员以及环境监测相关领域的研究生或专业人员;熟悉GEE平台基本操作者更佳; 使用场景及目标:①实现特定区域多光谱遥感影像的土地覆盖分类;②掌握GEE平台上从影像预处理、样本构建、模型训练到精度验证的完整分类流程;③支持水资源管理、生态环境监测等应用领域的空间数据分析; 阅读建议:此资源以实际代码形式呈现,建议结合GEE开发环境边运行边学习,重点关注影像预处理方法、训练样本构建逻辑、分类器参数设置及精度评估指标解读,便于迁移应用于其他区域或传感器数据。

34,871

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧