我相信答案是沒有。並且我正在尋找計數器示例以顯示輸出的順序不能保證,缺少按順序的子句。我可以依靠輸出的順序使用ROW_NUMBER()時
考慮:
create table #order (orderId int primary key clustered
, customerId int not null -- references customer(customerId)
, orderDateTIme datetime not null)
insert into #order values (1, 100, '2009-01-01')
insert into #order values (2, 101, '2009-01-02')
insert into #order values (3, 102, '2009-01-03')
insert into #order values (4, 103, '2009-01-04')
insert into #order values (5, 100, '2009-01-05')
insert into #order values (6, 101, '2009-01-06')
insert into #order values (7, 101, '2009-01-07')
insert into #order values (8, 103, '2009-01-08')
insert into #order values (9, 105, '2009-01-09')
insert into #order values (10, 100, '2009-01-10')
insert into #order values (11, 101, '2009-01-11')
insert into #order values (12, 102, '2009-01-12')
insert into #order values (13, 103, '2009-01-13')
insert into #order values (14, 100, '2009-01-14')
insert into #order values (15, 100, '2009-01-15')
insert into #order values (16, 101, '2009-01-16')
insert into #order values (17, 102, '2009-01-17')
insert into #order values (18, 101, '2009-01-18')
insert into #order values (19, 100, '2009-01-19')
insert into #order values (20, 101, '2009-01-20')
select * from #order
-- Results in PK order due to clustered primary key
select orderId, CustomerId, orderDateTime
, row_number() over (partition by customerId order by orderDateTime) RN
from #order
在MS SQL Server 2005中,輸出順序有兩個屬性:
每個
customerId
的行是 連續輸出。Row_number()
在每個customerId的 內是連續的。
我的理解是,這兩個屬性不保證沒有明確的條款順序。我正在尋找一個例子,其中上述屬性不保留,這不是由order by子句強制的,而僅僅是MS SQL Server恰好工作的結果。如果需要,隨意在你的例子中開發自己的表定義,索引等。
或者,如果我錯了,這將表明,這些排序保證,即使沒有條款明確順序的參考的鏈接。
+1爲腳本創建您的示例,我希望每個人都這樣做! – 2009-07-10 18:14:54