2015-11-02 4 views
-2

Давайте Предположим, у меня есть DataTable/SQL Table (Microsoft SQL), который представляет информацию о сотрудниках, напримерКак удалить дубликаты в SQL таблице и Concat другой части

, который содержит ПгвЬЫат, LastName, возраст, компанию, yearsofexperience, степень

Я хочу, чтобы объединить информацию, основанную на FirstName, LastName, возраст

компания yearsofexperience, степень должна быть Concat в соответствующей ячейке

firstname lastname age company yearsofexperience  Degree 

john   muller  21 IBM   4years   MBA 
jan   tonny  22, MSoft   1years   MS 
martin  tata  21 apple   2years   PHD 
john   Muller  21 sony   3years   MBA 
james  muller  21 IBM   4years   PHD 
jan   tonny  22 Telsa   1years   BS  
martin  tata  21 sun   2years   MBA 
james  Muller  21 TCS   3years   BS 

Примечание: MS SQL решение не MySql

Пожалуйста, найдите мне способ удалить повторяющиеся строки и сделать другие CONCAT данные в определенном столбце

Например, в сверху примере я хочу объединить информацию присутствуют в других подобных 3 записей

firstname lastname age company   yearsofexperience  Degree 

john  muller  21 IBM,sony,    4years,3years,  MBA,MBA 
jan  tonny   22, MSoft,Telsa   1years,1years   MS,BS 
martin tata   21 apple,sun    2years,2years   PHD,MBA 
james  muller  21 IBM,TCS    4years,3years   PHD,BS 

Right Я ищу, что лучшие способы реализации этого

Его хороший подход, если я Разделить таблицы в 2-х разных таблиц? может быть основано на совпадении Первичного ключа. мы можем использовать другие записи?

Пожалуйста, помогите мне спасибо (+1) заранее

+0

Пожалуйста, не помещайте товары, которые не используются. (Вы используете MySQL и MS SQL Server здесь?) – jarlh

ответ

1

Если вы используете SQL Затем попробуйте:

SELECT T1.firstname 
,t1.lastname 
,t1.age 
,Company = SubString ((SELECT ', ' + T2.company 
FROM table_name as T2 
WHERE T1.firstname = T2.firstname 
and t1.lastname = t2.lastname 
and t1.age = t2.age 
FOR XML PATH ('')), 3, 1000) 

,yearsofexperience = SubString ((SELECT ', ' + T2.yearsofexperience 
FROM table_name as T2 
WHERE T1.firstname = T2.firstname 
and t1.lastname = t2.lastname 
and t1.age = t2.age 
FOR XML PATH ('')), 3, 1000) 

,yearsofexperience = SubString ((SELECT ', ' + T2.Degree 
FROM table_name as T2 
WHERE T1.firstname = T2.firstname 
and t1.lastname = t2.lastname 
and t1.age = t2.age 
FOR XML PATH ('')), 3, 1000) 

FROM table_name as T1 
GROUP BY T1.firstname, t1.lastname ,t1.age 

Код: Create A Comma Delimited List From a Column in SQL Server

0

Вы можете попробовать group by и group_concat из SQL

SELECT *,group_concat(company) as company, 
group_concat(yearsofexperience) as yearsofexperience, 
group_concat(Degree) as Degree 
from table group by firstname 
group by lastname 
group by age 

больше по ссылке Merge data in two row into one

+0

Слишком плохо OP использует SQL Server. – jarlh

+0

OP использует SQL Server, а не Mysql. –

+0

OP использует MS SQL Server, он не поддерживает 'GROUP_CONCAT()', который является специфичным для MySQL. – vhu

Смежные вопросы