我有一個記錄表,每個記錄都有一個唯一的標識符,一個開始日期和兩個分號分隔的字符串,我需要將每個日期的值分解爲一個值,第一個日期是每個記錄的開始日期值。由於循環不好,我應該如何完成我想要做的事情?
目前,我正在做各種不好的事情,因爲我使用While循環遍歷表中的每條記錄(16K記錄+),並且使用了使用While循環的分割函數。分割功能基於Oskar Austegard的dbo.fnSplit
功能。
我一直在閱讀有關如何使用循環拆分對性能不利,但這些分隔字符串最多有100個項目。我開始嘗試瞭解CROSS APPLY
,並且我已經爲我創建的多個SP使用了CTE,但我不確定這裏使用CTE是否可行,或者它如何工作。我特別不確定在CROSS APPLY或任何其他APPLY。
如果有人願意協助,我會很樂意發佈我的查詢和摻假分裂功能。
您可以特別分享一些示例數據以及您當前的代碼嗎? – Phylyp
關於如何使用日期值拆分出分號分隔的字符串的更多細節,請參閱示例數據。 – Phylyp
看看這篇文章。它需要很好的理解SQL,但也許你可以根據自己的目的進行修改。此外,顯示你的代碼總是有幫助! http://www.sqlservercentral.com/articles/Tally+Table/72993/ – Jeremy