Сводный запрос в MS Access

#ms-access #pivot

#ms-access #сводный

Вопрос:

У меня есть следующие данные в таблице Access:

 ID    Name      CAT
1     Bill      Red
1     Bill      Yellow
1     Bill      Green
1     Bill      Orange
2     Ted       Purple
2     Ted       White
3     Alice     Indigo
3     Alice     Violet
3     Alice     Red  

И я хотел бы вывести его следующим образом:

 ID    Cat1    Cat2    Cat3    Cat4
1     Red     Yellow  Green   Orange
2     Purple  White        
3     Indigo  Violet  Red      

Могу ли я использовать pivot для этого? Если да, может кто-нибудь предложить подходящий запрос? Большое спасибо.

Ответ №1:

Рассмотрим:

 TRANSFORM First(Data.Cat) AS FirstOfCat
SELECT Data.ID, Data.Name
FROM Data
GROUP BY Data.ID, Data.Name
PIVOT "Cat" amp; DCount("*","Data","ID=" amp; [ID] amp; " AND Cat<'" amp; [Cat] amp; "'") 1;
  

Или, если есть поле уникального идентификатора записи, должен использоваться автономер:

 TRANSFORM First(Data.Cat) AS FirstOfCat
SELECT Data.ID, Data.Name
FROM Data
GROUP BY Data.ID, Data.Name
PIVOT "Cat" amp; DCount("*","Data","ID=" amp; [ID] amp; " AND ID_PK<" amp; [ID_PK]) 1;