數據庫問題(我們正在使用T-SQL)將多個記錄轉換爲單個記錄T-SQL
我目前正在研究員工和項目之間的關係。
我們正試圖重構數據庫來工作。
舊數據庫中包含的信息是這樣
Employee ID Project ID
1 1
1 2
1 3
2 1
2 2
我們需要將其轉換成單記錄每個員工像這樣
Project ID Employee ID 1 Employee ID 2
1 1 2
2 1 2
3 1 null
這裏是我已經試過SQL代碼,但我有已經遇到了問題,現在每個員工有三個以上的人,這只是一個例子。相信我,如果只有三個或兩個,我只會使用最大或最小值並完成它。
Select [Project ID], min([Employee ID])
From dbo.[Employee Project ID]
where [Employee ID] > select (Min([Employee ID]) form dbo.[Employee Project ID])
Group by [Project ID]
第一個問題這只是給了我第二大,並 如果是IE沒有大的元素,如果只有一個項目的員工一直在它仍然會返回1僱員ID 1和1員工ID 2.我已經試過病例陳述,他們剛剛炸燬了我。有沒有更簡單的方法來做到這一點?
我不能簡單地將所有員工退回來,我必須讓每個員工都進入自己的領域。如果它將單個字段的多個員工返回到項目中,則前端無法讀取它。我不是在寫一個新公司的前端,他們也不能改變他們的代碼。
我需要的是每個員工都在自己的領域,對於最初的混淆,我很抱歉,我們有數百名員工在這個數據庫中,而不是每個項目上都有。所以我們需要第一個槽中最低的員工編號和第二個槽中第二個最低的員工編號。它會變成一張有趣的表格,看起來像這樣。我無法控制這種情況,我只需要將我們的初始數據轉化爲這種形式即可。
Project ID Attribute Information
1 Employee ID 1 1
1 Employee ID 2 2
2 Employee ID 1 1
2 Employee ID 2 2
3 Employee ID 1 1
3 Employee ID 2 null
基本上我要去插入僱員ID 1到表和插入僱員ID 1到用於該屬性的字段。老實說,如果你知道一種方法來達到更好的底部表。我只是想節省你們的時間。
不要。不要。這是存儲數據的不好方法。舊的方法是存儲這些信息的**正確**方式。 –
我們正在將a遷移到新的前端,這不是數據存儲的方式。基本上會有一個新的記錄,每個都會以不同的方式存儲,但有點難以解釋,但我不知道如何爲屬性名稱分配這些標籤。 – osfp2328
「前端」表示顯示和UI邏輯。 「後端」意味着存儲和業務規則邏輯。如果你正在轉向新的前端,那不應該改變你的存儲。您的新前端可能會以新方式**顯示**數據,但這與存儲方式不同,並且在您之間的某個位置需要可以轉發數據的代碼。存儲方非常需要保留在舊模式中。新的模式只是簡單_wrong_。 SQL數據庫表**必須**有一個固定數量的columns_,並且編號列幾乎總是一個非常嚴重的設計缺陷。 –