2015-02-12 61 views
0

我向你們提出的問題是,如果有人在之前看到過這樣的行爲,或者任何人能夠向我解釋這種行爲。SQL Server 2008 Express不使用存儲過程轉發下一行

情況如何?

我們有一個表,它是這樣的:

Entry_Date | Exit_Date |S_No| 
----------------------------------- 
2015-01-29 | 2015-01-29 |1 
2015-01-29 | 2015-01-29 |1 
2015-01-29 | 2015-01-29 |1 
2015-01-30 | 2015-01-30 |1 
2015-01-30 | 2015-01-30 |1 
2015-02-02 | 2015-02-02 |1 

多個對象ID被分配到一個Entry_Date。訂單應由Entry_Date列定義。有趣的部分完全在於確定該訂單。當然,這樣做的表應該是這樣的後:

Entry_Date | Exit_Date |S_No| 
----------------------------------- 
2015-01-29 | 2015-01-29 |1 
2015-01-29 | 2015-01-29 |2 
2015-01-29 | 2015-01-29 |3 
2015-01-30 | 2015-01-30 |1 
2015-01-30 | 2015-01-30 |2 
2015-02-02 | 2015-02-02 |1 

隨着環路正常工作,有問題的列被更新,因爲它應該光標將達到結果集的結尾。

大?

有沒有人有任何解釋?在同一個過程中定義了更多的遊標,它們都按預期工作。我絕對不知道如何解釋這一點。

所以,感謝您的閱讀;)

+4

什麼循環? - 您忘記發佈您的代碼。然而,儘量避免循環,並使用與整個數據集一起工作的命令,比如'UPDATE ... WHERE ...' – 2015-02-12 07:41:56

+0

請記住,表中沒有「order」這樣的概念。只有查詢結果才具有順序,並且只有具有「ORDER BY」子句的查詢才適用。 – 2015-02-12 09:00:12

回答

1

使用Row_number()窗函數生成S_No

select Entry_Date ,Exit_Date, 
     S_No =Row_Number()over(partition by Entry_Date order by Exit_Date) 
From Yourtable 
+0

謝謝主席先生 我會試試看 – 2015-02-12 08:20:39

相關問題