Как сделать 2 строки в один ряд в SQL - PullRequest
0 голосов
/ 03 марта 2011
  I have a query

   example

           Title  Description
             A      XYZ
             A      ABC

   now i want a sql query so that i can get a single row

  Output :

         Title  Description
          A      XYZ | ABC

Ответы [ 5 ]

1 голос
/ 03 марта 2011
declare @table table (i int, a varchar(10))
insert into @table
    select 1, 'ABC' union all
    select 1, 'XYZ' union all
    select 2, '123'

select  t.i, 
        max(stuff(d.i, 1, 1, '')) [iList]
from    @table t
cross 
apply   (   select  '|' + a
            from    @table [tt]
            where   t.i = tt.i
            for xml path('')
        ) as d(i)
group
by      t.i;
1 голос
/ 03 марта 2011
Declare @tbl table(Title nvarchar(1),[Description] nvarchar(100))
Insert into @tbl values('A','XYZ'); 
Insert into @tbl values('A','ABC'); 
Insert into @tbl values('A','PQR'); 
DECLARE @CSVList varchar(100)

SELECT @CSVList = COALESCE(@CSVList + ' | ', '') + 
   [Description]
FROM @tbl
WHERE Title='A'

SELECT @CSVList
0 голосов
/ 03 марта 2011

Для 2 строк вы можете самостоятельно присоединиться к SQL Server. Это позволяет избежать разных хитростей «объединения строк в столбец». Вы также можете использовать обработку LEFT JOIN и NULL для 1 или 2 строк

SELECT
   T1.Title,
   T1.Description + '|' + T2.Description
FROM
  MyTable T1
  JOIN
  MyTable T2 ON T1.Title = T2.Title

SELECT
   T1.Title,
   T1.Description + ISNULL('|' + T2.Description, '') --COALESCE for the pedants)
FROM
  MyTable T1
  LEFT JOIN
  MyTable T2 ON T1.Title = T2.Title
0 голосов
/ 03 марта 2011
0 голосов
/ 03 марта 2011

В mysql есть функция group_concat, которая может вам помочь. Используйте это так:

SELECT Title,GROUP_CONCAT(Description) FROM table_name GROUP BY Title

Выход будет

 Title  Description
   A      XYZ,ABC

Тогда вы можете заменить "," на "|" если хотите (это можно сделать с помощью функции замены)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...