2014-02-06 4 views
0

Iam пытался принести значение столбца строки CONCAT на основе ID я написал SQL, но там, кажется, какой-то вопрос в том, чтоSQL КОЛОННЫ грести

таблице 1, имеющей col1 и col2 таблице 2 с col1 и col3 стол 3, имеющий col1 COL4 и col5

COL1 COL2  COL3 COL4 COL5 
    1000 APPLE  50  92 TESTING 
    1000 APPLE  50  92 ALPHA 
    1000 APPLE  50  92 BETA 
    1000 APPLE  50  92 OMEGA 
    2000 ORANGE  60  90 DELTA 
    2000 ORANGE  60  90 TEST 
    2000 ORANGE  60  90 SLEEP 

Я хочу выход как НИЖЕ

1000 APPLE 50 92 TESTINGALPHABETAOMEGA 
    2000 ORANGE 60 90 DELTATESTSLEEP 

ответ

0

Вы можете использовать SQL Server» Расширения s XML для конкатенации строк:

SELECT COL1, 
     COL2, 
     COL3, 
     COL4, 
     MessageList = (SELECT Col5 + '' 
         FROM T1 AS T2 
         WHERE T1.Col1 = T2.Col1 
         AND  T1.Col2 = T2.Col2 
         AND  T1.Col3 = T2.Col3 
         AND  T1.Col4 = T2.Col4 
         FOR XML PATH(''), TYPE 
         ).value('.', 'NVARCHAR(MAX)') 
FROM T1 
GROUP BY Col1, Col2, Col3, Col4; 

Example on SQL Fiddle

Для более подробного объяснения о том, как это работает see this answer


РЕДАКТИРОВАНИЕ

Ниже приводится обновленный решение показать, как это wo пакетирования работа с 2-мя столы

SELECT T1.COL1, 
     T1.COL2, 
     T2.COL3, 
     T2.COL4, 
     MessageList = (SELECT '' + Col5 
         FROM T2 AS T3 
         WHERE T1.Col1 = T3.Col1 
         AND  T2.Col3 = T3.Col3 
         AND  T2.Col4 = T3.Col4 
         FOR XML PATH(''), TYPE 
         ).value('.', 'NVARCHAR(MAX)') 
FROM T1 
     INNER JOIN T2 
      ON T1.Col1 = T2.Col1 
GROUP BY T1.Col1, T1.Col2, T2.Col3, T2.Col4; 

Example on SQL Fiddle

+0

Я думал избежать соединений и просить простой пример, но я не могу интегрировать, что в моем коде, как И получают ошибку, как подзапрос дает более одного результат. Так обновлено с фактической структурой – user3271721

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