如果標題不明確,我會道歉 - 我只是不知道如何描述這個問題,而且我真的不知道SQL如何。SQL - 如何將幾個非常相似的行「扁平化」爲1
我正在使用我們案例管理系統使用的數據庫。在很多地方,開發人員已經明顯延長了這個時間。我正在處理聯繫人詳細信息(姓名,地址等...),他們添加了額外的字段來處理電子郵件地址,並允許家庭/工作/手機號碼等...
問題是,他們沒有爲每個新領域添加新的領域。他們在兩個不同的表格中添加了幾個字段 - 第一個字段包含字段名稱,第二個字段包含實際數據。
第一個名爲AdditionalAddElTypes的表格中調用AddElTypeText - AddElTypeText字段包含「工作電話1」,「傳真」,「家庭電子郵件」等的值......(總共有10個不同的值,我看不到開發者很快就會擴大這個數字)
第二個字段在稱爲AdditionalAddressElements的表中調用AddElementText - AddElementText然後包含實際數據,例如電話號碼,電子郵件地址。
對於那些你們誰(不像我)覺得它更容易查看SQL代碼,它是:
SELECT
Address.AddressLine1
,AdditionalAddElTypes.AddElTypeText
,AdditionalAddressElements.AddElementText
FROM
Address
INNER JOIN AdditionalAddressElements
ON Address.AddressID = AdditionalAddressElements.AddressID
INNER JOIN AdditionalAddElTypes
ON AdditionalAddressElements.AddElTypeID = AdditionalAddElTypes.AddElTypeID
我可以用這個工作,但如果有任何接觸有2個或更多的「額外」元素,我得到了多行,大部分數據是相同的,但是AddElTypeText和AddElementText的2列是不同的。
因此,任何人都可以提出任何建議,將聯繫人「扁平化」爲單行。我想到了將AddElTypeText和AddElementText連接成單個字符串字段的方法,理想情況是在AddElTypeText和AddElementText之間有一個空格,然後a:或分隔AddElTypeText和AddElementText對。
但是,我很少知道如何實現這一點,或者是否採用完全不同的方法會更好。任何幫助非常感激地收到!
加里
你可以用你的創建表語句爲每個表編輯你的文章,一些示例數據和所需的結果? – Taryn
討論串分組還有其他問題,例如, [這裏](http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server)。在一些RDBM中,已經有了內置的函數(例如在PostgreSQL中有'array_agg()'。) –
請發佈樣本數據,當前輸出和期望的輸出 –