Преобразование данных строк в столбцы с использованием SQL в MS Access - PullRequest
0 голосов
/ 16 мая 2018

Добрый день,

Изначально у меня была таблица, которая работает следующим образом:

Table1

PartSN Test Data
Part1 Test1 20
Part1 Test2 23

Я мог преобразовать тест в столбец, используя MAX IIF, как

Select
Table1.PartSN,
Max(IIF(Table1.Test = 'Test1', Table1.Data, NULL)) As 'Test1',
Max(IIF(Table1.Test = 'Test2', Table1.Data, NULL)) As 'Test2'
From Table1 Group By Table1.PartSN

Данные будут

PartSN Test1 Test2
Part1   20     23

Теперь моя проблема состоит в том, что мой тест включает в себя несколько итераций

PartSN Test Data Iter
Part1  Test1 20   1
Part1  Test2 23   1
Part1  Test1 19   2
Part1  Test2 24   2

Использование моего предыдущего кода, включая итерацию в IIF,Позвольте мне получить только одну строку, но мне нужны все итерации, например:

PartSN Iter Test1 Test2
Part1   1    20     23
Part1   2    19     24

Спасибо за любую помощь, совет или ссылку на возможное решение.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Рассмотрим уникальный перекрестный запрос MS Access (недоступный в других СУБД), который исключает построчные выражения условного агрегирования и автоматизирует сводные данные для всех значений Test :

TRANSFORM Max(t.Data) As MaxData
SELECT t.PartSN, t.Iter
FROM mytable t
GROUP BY t.PartSN, t.Iter
PIVOT t.Test;

-- PartSN   Iter    Test1   Test2
-- Part1    1       20      23
-- Part1    2       19      24
0 голосов
/ 16 мая 2018

Просто включите его в select и group by:

select t1.PartSN, t1.iter,
       max(iif(t1.Test = 'Test1', t1.Data, NULL)) As Test1,
       max(iif(t1.Test = 'Test2', t1.Data, NULL)) As Test2
from Table1 as t1
group by t1.PartSN, t1.iter;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...