0
我有一個表,名爲******中國,其中有:帶有重複列鍵透視表
CREATE TABLE PhoneNumber(
PhoneNumberID int Identity(1, 1),
CustomerID int NOT NULL,
Preference int NULL,
PhoneNumber nvarchar(20))
客戶可能有0個電話號碼,我需要轉動這一點,它加入到輸出視圖數據進行郵件合併。我的用戶希望能夠使用字段名稱獲得合併數據:Phone1,Phone2,Phone3,它們來自上表,並且按照優先順序排序。我只想要首選3個數字。
數據並不漂亮。偏好字段可能不是順序的,對每個客戶來說都不是唯一的。例如,客戶可能有2個優先等於0的數字。我並不關心哪個電話號碼是第一個,如果首選項相等於多個號碼,但我不能像動態PIVOT中那樣使用乾淨的「首選項」作爲列鍵。
我需要加入此客戶ID的視圖。該視圖需要有4列:CustomerID,Phone1,Phone2,Phone3
我已經嘗試使用ROWNUMBER指定行號,當按優先順序排序時,這不起作用,因爲它爲PhoneNumber中的每一行分配一個ROWNUMBER表。
我也嘗試了一個可怕的UNION查詢,但它很糟糕。
INSERT INTO PhoneNumber
(CustomerID, Preference, PhoneNumber) VALUES
(1, 0, '555-1234')
GO
INSERT INTO PhoneNumber
(CustomerID, Preference, PhoneNumber) VALUES
(1, 0, '555-4321')
GO
INSERT INTO PhoneNumber
(CustomerID, Preference, PhoneNumber) VALUES
(1, 4, '555-1111')
GO
INSERT INTO PhoneNumber
(CustomerID, Preference, PhoneNumber) VALUES
(2, 0, '555-2222')
GO
輸出
CustomerID | Phone1 | Phone2 | Phone3
1 | 555-1234 | 555-4321 | 555-1111
2 | 555-2222 | NULL | NULL
太棒了!非常感謝你。我將閱讀PARTITION BY。 – Molloch