一个SQL需求,请帮忙给看下,有点小麻烦了可能

一速微光 2019-01-16 09:10:09
SN Value CTIME
HD72_81_A5 0.265 2018-11-01 00:00:00.000
HD72_81_A5 0.264 2018-11-01 00:01:00.000
HD72_81_A5 0.263 2018-11-01 00:02:00.000
HD72_81_A5 0.26 2018-11-01 00:03:00.000
HD72_81_A5 0.247 2018-11-01 00:04:00.000
HD72_81_A5 0.243 2018-11-01 00:05:00.000
HD72_81_A5 0.241 2018-11-01 00:06:00.000
HD72_81_A5 0.232 2018-11-01 00:07:00.000
... --数据太多不展示了
HD72_81_A6 0.265 2018-11-01 00:00:00.000
HD72_81_A6 0.264 2018-11-01 00:01:00.000
HD72_81_A6 0.263 2018-11-01 00:02:00.000
HD72_81_A6 0.26 2018-11-01 00:03:00.000
HD72_81_A6 0.247 2018-11-01 00:04:00.000
HD72_81_A6 0.243 2018-11-01 00:05:00.000
HD72_81_A6 0.241 2018-11-01 00:06:00.000
HD72_81_A6 0.232 2018-11-01 00:07:00.000
... --数据太多不展示了
我想要的效果是按照不同的SN,重新组织时间值在每个小时中已3分钟为间隔组织数据Newtime时间用最后1个分组时间
具体效果如下:
SN Value CTIME Newtime
HD72_81_A5 0.264 2018-11-01 00:01:00.000 2018-11-01 00:03:00.000
HD72_81_A5 0.263 2018-11-01 00:02:00.000 2018-11-01 00:03:00.000
HD72_81_A5 0.26 2018-11-01 00:03:00.000 2018-11-01 00:03:00.000
HD72_81_A5 0.247 2018-11-01 00:04:00.000 2018-11-01 00:06:00.000
HD72_81_A5 0.243 2018-11-01 00:05:00.000 2018-11-01 00:06:00.000
HD72_81_A5 0.241 2018-11-01 00:06:00.000 2018-11-01 00:06:00.000
HD72_81_A5 0.232 2018-11-01 00:07:00.000 2018-11-01 00:07:00.000
...
HD72_81_A6 0.264 2018-11-01 00:01:00.000 2018-11-01 00:03:00.000
HD72_81_A6 0.263 2018-11-01 00:02:00.000 2018-11-01 00:03:00.000
HD72_81_A6 0.26 2018-11-01 00:03:00.000 2018-11-01 00:03:00.000
HD72_81_A6 0.247 2018-11-01 00:04:00.000 2018-11-01 00:06:00.000
HD72_81_A6 0.243 2018-11-01 00:05:00.000 2018-11-01 00:06:00.000
HD72_81_A6 0.241 2018-11-01 00:06:00.000 2018-11-01 00:06:00.000
HD72_81_A6 0.232 2018-11-01 00:07:00.000 2018-11-01 00:07:00.000
...
...全文
36 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2019-01-16
  • 打赏
  • 举报
回复

IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO

CREATE TABLE #T
(SN VARCHAR(10),
 VALUE DECIMAL(12,4),
 CTIME DATETIME)

INSERT INTO #T
SELECT 'HD72_81_A5',0.265,'2018-11-01 00:00:00.000' UNION ALL
SELECT 'HD72_81_A5',0.264,'2018-11-01 00:01:00.000' UNION ALL
SELECT 'HD72_81_A5',0.263,'2018-11-01 00:02:00.000' UNION ALL
SELECT 'HD72_81_A5',0.26,'2018-11-01 00:03:00.000' UNION ALL
SELECT 'HD72_81_A5',0.247,'2018-11-01 00:04:00.000' UNION ALL
SELECT 'HD72_81_A5',0.243,'2018-11-01 00:05:00.000' UNION ALL
SELECT 'HD72_81_A5',0.241,'2018-11-01 00:06:00.000' UNION ALL
SELECT 'HD72_81_A5',0.232,'2018-11-01 00:07:00.000' 

SELECT *,
MAX(CTIME) OVER (PARTITION BY SN,CONVERT(VARCHAR(13),CTIME,20),(DATEPART(MINUTE,CTIME)-1)/3 ORDER BY CTIME DESC) AS NEW_TIME
FROM #T
WHERE DATEPART(MINUTE,CTIME)<>0

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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