Tsql 什么';这个分区有什么问题吗

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

我有一个查询,它在一个时间列上使用了一个分区,但是结果有点出乎意料,这里出了什么问题?为什么我在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   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