Поэтому у меня есть следующая таблица:MS Access - несколько запросов TRANSFORM?
Record ID Test ID Test Type Value Unit Passed Test
1 1 Visual 1
2 1 Earth Current 25 A 3
3 1 Earth 0.07 Ohm 1
4 1 Insulation >99.99 MOhm 1
5 1 Leakage <0.1 mA 1
6 1 Touch Leakage <0.1 mA 1
7 1 Load <0.05 kVA 3
8 2 Visual 1
9 2 Earth Current 25 A 3
10 2 Earth 0.07 Ohm 1
11 2 Insulation >99.99 MOhm 1
12 2 Leakage <0.1 mA 1
13 2 Load <0.05 kVA 3
14 2 Polarity 1
15 3 Visual 1
16 3 Earth Current 25 A 3
17 3 Earth 0.16 Ohm 1
18 3 Insulation >99.99 MOhm 1
19 3 Leakage <0.1 mA 1
20 3 Load <0.05 kVA 3
21 3 Polarity 1
То, что я хочу сделать, это выбрать (с несколько присоединяется к другим таблицам) от этого, при использовании ТРАНСФОРМА для создания новых столбцов с помощью тестового типа, как заголовки. Этому я справился, но проблема связана с типами полярности и визуального тестирования; в основном для других типов тестов значение, которое я выбираю, должно быть из столбца Value, но для Polarity и Visual это должно быть из столбца Passed Test.
Затем мне также необходимо объединить устройство со значениями и заменить «1» или «3» на «PASS» и что-нибудь еще с «FAIL» для Polarity и Visual.
Так что мне нужно, чтобы в конечном итоге с чем-то вроде следующего:
Earth Earth Current Insulation Leakage Load Polarity Touch Leakage Visual
>99.99 MOhm <0.1 mA <0.05 KVA PASS PASS
<0.04 Ohm 25A >99.99 MOhm <0.1 mA <0.05 KVA PASS PASS
0.07 Ohm 25A >99.99 MOhm 0.31 mA <0.05 KVA PASS <0.1 PASS
Вот что я до сих пор:
TRANSFORM First([Value]) AS Result
SELECT DISTINCT
Assets.Make,
Assets.Model,
Assets.[Asset ID],
[Asset Tests].[Test Date],
[Asset Tests].[Passed Test]
FROM
(Assets
INNER JOIN
[Asset Tests]
ON
[Asset Tests].[Asset ID] = Assets.[Asset Key])
INNER JOIN
[Asset Test Records]
ON
[Asset Test Records].[Test ID] = [Asset Tests].[Test ID]
GROUP BY
[Asset Test Records].[Test ID],
Assets.Make,
Assets.Model,
Assets.[Asset ID],
[Asset Tests].[Test Date],
[Asset Tests].[Passed Test]
ORDER BY
Assets.[Asset ID]
PIVOT
[Test Type]
Он смотрит на меня, как я, возможно, потребуется какое-кратное преобразование что происходит ... но я не знаю, с чего начать. Или я лаяю неправильное дерево?
Благодаря
EDIT: Я хотел бы добавить, что у меня нулевой контроль над входом, в противном случае все это дело было бы гораздо проще. Файл базы данных поступает так, и мне приходится иметь дело с ним.
Я думаю, что я, вероятно, сначала создаю базовый запрос, чтобы создать новый столбец с именем «Output_value», который содержит логику «Iif» ([Тип теста] = «полярность» или [Тип теста] = «визуальный», [принят test], [value] & '' & [unit]). Затем закрепите свой опорный элемент в этом запросе с помощью First (Output_value) в качестве поля PIVOT. Обратите внимание, что ваш базовый запрос также должен содержать таблицу поиска, чтобы преобразовать 1 и 3 в fail/pass, как вам нужно. –