2014-09-29 4 views
0

У меня есть следующие таблицы в SQL ServerSQL Server: Выберите строки в строках

Names TypeID 
------------- 
JJ  23 
KK  20 
LL  15 
JJ  13 
KK  18 
JJ  10 

Я хочу результаты моего запроса на выборку, чтобы появиться, как показано ниже

Names TypeID 
--------------- 
JJ 23,13,10 
KK 20,18 
LL 15 

Как я могу добиться этого? Пожалуйста, помогите, я новичок в SQL

+1

Люди обычно downvote вопрос, который не показывает попытку решить эту проблему. Таким образом, я рекомендую вам также отправлять запросы, которые вы пробовали, и полученные результаты. –

+2

Этот вопрос был отвечен много раз. Например, здесь: http://stackoverflow.com/questions/5031204/does-t-sql-have-an-aggregate-function-to-concatenate-strings Хороший фрагмент кода выглядит следующим образом: { – WhiteAngel

+0

см. Http : //msdn.microsoft.com/en-us/library/ms131056.aspx – mordechai

ответ

0

Попробуйте это: - до

SELECT Names, GROUP_CONCAT(TypeID) 
FROM YOUR_TABLE 
GROUP BY Names; 
+0

Большое спасибо. Это был самый простой ответ. – user3492822

+0

Вы уже пробовали. –

+0

Извините, это работает только в mysql, а не на сервере sql. – user3492822

2

Этот вопрос был много раз. Например здесь: Does T-SQL have an aggregate function to concatenate strings?

Хороший фрагмент кода, как это:

set nocount on; 
declare @YourTable table (RowID int, HeaderValue int, ChildValue varchar(5)) 
insert into @YourTable VALUES (1,1,'CCC') 
insert into @YourTable VALUES (2,2,'B<&>B') 
insert into @YourTable VALUES (3,2,'AAA') 
insert into @YourTable VALUES (4,3,'<br>') 
insert into @YourTable VALUES (5,3,'A & Z') 
set nocount off 
SELECT 
    t1.HeaderValue 
     ,STUFF(
        (SELECT 
         ', ' + t2.ChildValue 
         FROM @YourTable t2 
         WHERE t1.HeaderValue=t2.HeaderValue 
         ORDER BY t2.ChildValue 
         FOR XML PATH(''), TYPE 
        ).value('.','varchar(max)') 
        ,1,2, '' 
      ) AS ChildValues 
    FROM @YourTable t1 
    GROUP BY t1.HeaderValue 

Этот код взят из той же нити, к которому я отправил ссылку.

-1

попробовать этот код

SELECT name, GROUP_CONCAT(typeid) 
FROM test 
GROUP BY name 
1
drop table #t 
create table #t(names varchar(10),type1 int) 
insert into #t values('JJ',23), 
('KK',20), 
('LL',15), 
('JJ',13), 
('KK',18), 
('JJ',10) 

select distinct names,stuff((select ',' +cast(type1 as varchar(10)) from #t t2 where t2.names=t1.names for xml path('')),1,1,'') as TypeID 
from #t t1 

FIDDLE DEMO

0

попробовать это

SELECT Names, TypeID = 
    STUFF((SELECT ', ' + Convert(nvarchar(2),TypeID) 
      FROM your_table b 
      WHERE b.Names = a.Names 
      FOR XML PATH('')), 1, 2, '') 
FROM your_table a 
GROUP BY Names 
Смежные вопросы