数据库脚本,把相同时间的行的一个字段改为同一个

jiaokangkk 2017-11-03 09:48:08


就是把发送时间相同的两条短信后面的SMS_SERIALS_ID改为1000001,依次类推
...全文
195 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2017-11-03
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([发送时间] Date,[SMS_SERIALS_ID] int)
Insert #T
select '2017-01-01',-1 union all
select '2017-01-01',-1 union all
select '2017-01-02',-1 union all
select '2017-01-02',-1 union all
select '2017-01-03',-1
Go
--测试数据结束
;WITH cte AS (
SELECT 发送时间 ,
COUNT(1) AS [count] ,
ROW_NUMBER() OVER ( ORDER BY 发送时间 ) + 1000000 AS num
FROM #T
GROUP BY 发送时间
HAVING COUNT(1) > 1
)
UPDATE #T
SET SMS_SERIALS_ID = cte.num
FROM cte
WHERE #T.发送时间 = cte.发送时间

SELECT * FROM #T


jiaokangkk 2017-11-03
  • 打赏
  • 举报
回复
唐诗三百首 2017-11-03
  • 打赏
  • 举报
回复

update b
 set b.SMS_SERIALS_ID=1000000+c.rn
 from FMS.MSG.SMS_MESSAGE_SEND_MAIN b
 inner join (select a.SEND_TIME,
                    rn=row_number() over(order by a.SEND_TIME)
             from (select distinct SEND_TIME 
                   from FMS.MSG.SMS_MESSAGE_SEND_MAIN) a) c on b.SEND_TIME=c.SEND_TIME
wwfxgm 2017-11-03
  • 打赏
  • 举报
回复
这2楼语句,真是写的挺好的。

34,838

社区成员

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

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