我試圖從使用SQL Server數據庫的第三方系統中提取一些數據。 DB結構看起來是這樣的:SQL Server:通過連接行。逗號分隔字段
訂購
OrderID OrderNumber
1 OX101
2 OX102
OrderItem的
OrderItemID OrderID OptionCodes
1 1 12,14,15
2 1 14
3 2 15
選項
OptionID Description
12 Batteries
14 Gift wrap
15 Case
[etc.]
我想是每一行訂單項目包括連接字段與每個選項描述。因此,像這樣:
OrderItemID OrderNumber Options
1 OX101 Batteries\nGift Wrap\nCase
2 OX101 Gift Wrap
3 OX102 Case
當然這是由一個事實,即選項是一個逗號分隔字符串字段,而不是一個適當的查找表複雜。所以我需要用逗號分割它,以便加入選項表,然後將結果連接回一個字段。
起初,我嘗試創建一個函數,用逗號分隔選項數據,並將其作爲表格返回。儘管我能夠將這個函數的結果與選項表結合起來,但是我無法將OptionCodes列傳遞給聯接中的函數,因爲它似乎只適用於聲明變量或硬編碼值。
有人能指出我正確的方向嗎?
如果在所有可能的情況下你想添加一個相關的表來存儲選項代碼。逗號限制列表是數據庫設計不正確的標誌,除非它僅用於顯示,並且絕不會與另一個表相關或需要列表中的數據按單個項目進行搜索。您需要儘快在數據庫中修復不好的設計選擇。修復它們的時間越長,它們越難以修復。 – HLGEM 2011-06-14 14:49:20
@HLGEM - 100%同意,因爲您可以看到這樣簡單的事情基於我在下面提供的解決方案是多麼困難。 – Yuck 2011-06-14 14:52:09
@Yuck,每當我看到它,我都會從你的用戶名中得到一個笑聲。我想你在註冊時說,「哦,Yuck,我必須拿出一個用戶名。」 – HLGEM 2011-06-14 14:55:22