2014-12-08 1 views
1

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

id  date  type 
--  ------  ----- 
1  2014/10/25 a 
2  2014/08/02 a 
1  2014/10/07 b 

Но я хочу, чтобы получить эту таблицу как

id  type_a  type_b 
--  ------  ------ 
1  2014/10/25 2014/10/07 
2  2014/08/02 

Так как я должен написать свое отборное заявление для этой ситуации?

ответ

0

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

SELECT a.id, 
     MAX(CASE WHEN a.type = 'a' THEN a.date ELSE '' END) type_a, 
     MAX(CASE WHEN a.type = 'b' THEN a.date ELSE '' END) type_b 
FROM tableA a 
GROUP BY a.id; 
+0

вашего запроса должно быть динамичными, он даст результат только для двух типов, предположим, что на одном и том же идентификаторе существует несколько типов, а также тип может варьироваться от разных идентификаторов к id, а затем, как вы собираетесь к cr eate new columns –

-1

Проверить Это один .....

select id,convert(varchar(max),a ,111) as type_a,isnull(convert(varchar(max),b ,111),'') 

as type_b from tableName pivot (max(date1) for type1 in (a,b)) As pvt 

То же самое можно сделать с помощью Dynamic поворачивающихся

DECLARE @cols AS NVARCHAR(MAX); 
DECLARE @query AS NVARCHAR(MAX); 

select @cols = STUFF((SELECT distinct ',' + 
         QUOTENAME(type1) 
         FROM tableName 
         FOR XML PATH(''), TYPE 
        ).value('.', 'NVARCHAR(MAX)') 
         , 1, 1, ''); 
         print @cols 

SELECT @query = 

'SELECT * 
FROM 
(
    SELECT 
    t.id, 
    t.date1, 
    t.type1 
    FROM tableName AS t 

) AS t 
PIVOT 
(
    MAX(date1) 
    FOR type1 IN(' + @cols + ')' + 
') AS p ; ' ; 

    execute(@query); 
+0

Вопрос имеет тег Netezza, поэтому предполагалось, что это было для Netezza. Если это так, то процедурные процедуры PIVOT и SQL Server не будут работать. – ScottMcG

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