Доступ к сводному SQL-запросу, включающему пустые поля - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь написать сводный запрос Access SQL, который отображает значения в одной строке для всех кодов в таблице для данного значения идентификатора, даже если поля пустые. Пока что все, что я пробовал, вернуло либо несколько строк, либо, если данные в одной строке, все пустые поля пропущены.

Я пробовал это как сводный запрос, как самостоятельное объединение, используя IIF, как запрос объединения, и все, что я мог придумать или найти в Интернете.

Sample Data:
ID    TypeCode  TypeID
248    AT       3013
329    AT       7465
329    PL       7998
329    TJ       6232
477    NX       1403

Desired results on a query of ID 329:
ID      AT      PL      TJ      NX
329     7465    7998    6232    <blank>

What I get: 
ID    AT    PL      TJ
329   7465  7998    6232

or 
ID    AT    PL      TJ
329   7465  
329         7998
329                 6232

Desired results on a query of ID 248:
ID    AT     PL       TJ      NX
248   7465   <blank>  <blank> <blank>

What I get:
ID    AT
248   7465

Sample query:
TRANSFORM Avg(MyTable.[ID]) AS ID
SELECT MyTable.[ID], TypeCode, TypeID
FROM MyTable WHERE MyTable.ID = 329
GROUP BY TypeCode, TypeID
PIVOT MyTable.TypeCode;

Я пытался добавить операторы IFF в поля SELECT, но без кубиков.

Я надеюсь, что кто-то может предложить правильный подход, который я должен использовать, чтобы получить желаемые результаты, показанные выше. Спасибо за любую помощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 23 января 2019

Вы должны сгруппировать по ID и получить столбцы с условным MAX:

SELECT ID,
MAX(IIF(TypeCode = 'AT', TypeID, NULL)) AS AT,
MAX(IIF(TypeCode = 'PL', TypeID, NULL)) AS PL,
MAX(IIF(TypeCode = 'TJ', TypeID, NULL)) AS TJ,
MAX(IIF(TypeCode = 'NX', TypeID, NULL)) AS NX
FROM MyTable
WHERE ID = 329
GROUP BY ID;

Результаты:

ID    AT        PL      TJ     NX
329   7465      7998    6232    

Если вы удалите часть WHERE, результат будет:

ID    AT        PL      TJ      NX
248   3013          
329   7465      7998    6232    
477                             1403
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...