Tsql 什么';这个分区有什么问题吗
我有一个查询,它在一个时间列上使用了一个分区,但是结果有点出乎意料,这里出了什么问题?为什么我在RN上得到多个1?(一个用于21:00:02:100,另一个用于21:00:02:600) 结果:Tsql 什么';这个分区有什么问题吗,tsql,sql-server-2008,Tsql,Sql Server 2008,我有一个查询,它在一个时间列上使用了一个分区,但是结果有点出乎意料,这里出了什么问题?为什么我在RN上得到多个1?(一个用于21:00:02:100,另一个用于21:00:02:600) 结果: **1 2010-10-03 21:00:02.100** 2 2010-10-03 21:00:02.100 3 2010-10-03 21:00:02.200 4 2010-10-03 21:00:02.200 5 2010-10-03 21:00:02.200 4 2
**1 2010-10-03 21:00:02.100**
2 2010-10-03 21:00:02.100
3 2010-10-03 21:00:02.200
4 2010-10-03 21:00:02.200
5 2010-10-03 21:00:02.200
4 2010-10-03 21:00:02.500
**1 2010-10-03 21:00:02.600**
2 2010-10-03 21:00:02.600
3 2010-10-03 21:00:02.600
5 2010-10-03 21:00:02.700
6 2010-10-03 21:00:02.700
7 2010-10-03 21:00:02.700
8 2010-10-03 21:00:02.700
9 2010-10-03 21:00:02.700
10 2010-10-03 21:00:02.700
11 2010-10-03 21:00:02.700
12 2010-10-03 21:00:02.700
13 2010-10-03 21:00:02.700
14 2010-10-03 21:00:02.700
15 2010-10-03 21:00:02.700
16 2010-10-03 21:00:02.700
17 2010-10-03 21:00:02.700
18 2010-10-03 21:00:02.700
19 2010-10-03 21:00:02.700
20 2010-10-03 21:00:02.700
21 2010-10-03 21:00:02.700
22 2010-10-03 21:00:02.700
您使用的是时间(0)的强制转换,用于您的订购,将时间舍入(截断?)到秒精度。它的工作原理与广告完全一样 编辑: 使用相同的分区方式和顺序方式是没有意义的 我的猜测是,您正在尝试按秒进行分区,并希望在该间隔内使用行数 试试这个:
ROW_NUMBER() OVER(
PARTITION BY [Date], CAST([Time] AS Time(0))
ORDER BY [DATE], [Time]
) RN
如果在0.5秒的边界上出现重复的行号,请使用此选项强制截断,而不是取整
ROW_NUMBER() OVER(
PARTITION BY [Date], CAST([Time] - '00:00:00.5000' AS Time(0))
ORDER BY [DATE], [Time]
) RN
非常感谢您的反馈,事实证明cast是四舍五入的,因此它不起作用(给我1的两倍)。从[时间]中减去对我不起作用,出现了一个错误。最后,我使用此代码使其按预期工作:
ROW_NUMBER()结束(
按转换划分(nvarchar(8),[Time],8)
按[日期]、[时间]订购
从[DB]…[TABLE]
请使用花括号按钮格式化代码…现在尝试了,但是如何获得语法着色?
ROW_NUMBER() OVER(
PARTITION BY [Date], CAST([Time] - '00:00:00.5000' AS Time(0))
ORDER BY [DATE], [Time]
) RN