Этот вопрос может показаться общим, но он довольно сложный.
Начнем с основ программного обеспечения:
MS Access 2016
MS SQL ver.17.7
DAQFactory 17.1
DAQFactory - это программное обеспечение SCADA, которое я использую для измерения и хранения данных от нескольких датчиков температуры.Я использую «Экспортный набор» для экспорта данных датчика в базу данных MSSQL.Я собираю данные датчика раз в минуту, генерируя 1 строку данных датчика.Я настроил его для создания новой таблицы для каждого образца (потому что мне нужно только 10 раз / от 1 до 10 минут, и таким образом мне не нужно постоянно менять имена своих таблиц).
У меня есть 6 датчиков температуры, которые DAQFactory экспортирует в такой формат:
База данных MS SQL - просто носитель / канал для моих данныхперейти от DAQFactory к MS Access, и поэтому у меня нет никаких проблем с базой данных.
Это школьный проект, и я над головой.Клиент, для которого я создаю программный пакет, хочет собрать свои данные в отчете с другими типами данных.Поэтому мне нужно поместить данные датчика в такую форму:
Я использую MS Access для создания отчета и сбора данных из моей базы данных.Я пробовал несколько типов запросов, но я не могу заставить его работать так, как я хочу.
Проблема в том, что таблица в базе данных и в отчете имеют противоположное расположение строк и столбцов, и я не могу переключить его в запросе в Access (также называемом транспонированием).
Я рассмотрел некоторые из этих решений:
https://access -programmers.co.uk / forums / showthread.php? T = 169794
преобразование имен столбцов для использования в качестве полей строк в Access
Access - преобразование некоторых данных столбцов в записи строк
Функции JOIN
Функции PIVOT
Но я не могу заставить его работать.
Экспортные наборы:
Всемои экспортные наборы содержат одинаковые столбцы:
[TheTime],
[T_01],
[T_02],
[T_03],
[T_04],
[T_05],
[T_06]
Наборы экспорта называются:
dbo.Temp_1min
dbo.Temp_2min
dbo.Temp_3min
dbo.Temp_4min
и т. Д.до 10.
При импорте этого в Access [TheTime] становится первичным ключом, и все записанные выборки записываются в одну и ту же секунду, поэтому это, естественно, идентификатор таблиц.
Вот код, который я использую для отображения моих данных.Я использую «Итоги: последний», поэтому в моей таблице отображается только последнее значение из каждой таблицы и датчика.Извините за код, он отформатирован на норвежском языке, но единственное отличие - «SisteAv», что означает «LastOf», например, «Totals: Last».
Код для получения последнего значения из «dbo_Temp_1min»таблица, этот запрос называется «Temp_Samples1»:
SELECT Last(dbo_Temp_1min.TheTime) AS SisteAvTheTime, Last(dbo_Temp_1min.T_01) AS SisteAvT_01, Last(dbo_Temp_1min.T_02) AS SisteAvT_02, Last(dbo_Temp_1min.T_03) AS SisteAvT_03, Last(dbo_Temp_1min.T_04) AS SisteAvT_04, Last(dbo_Temp_1min.T_05) AS SisteAvT_05, Last(dbo_Temp_1min.T_06) AS SisteAvT_06
FROM dbo_Temp_1min;
Код для объединения нескольких таблиц в одну:
SELECT [SisteAvTheTime], [SisteAvT_01], [SisteAvT_02], [SisteAvT_03], [SisteAvT_04], [SisteAvT_05], [SisteAvT_06]
FROM Temp_Samples1
UNION
SELECT [SisteAvTheTime], [SisteAvT_01], [SisteAvT_02], [SisteAvT_03], [SisteAvT_04], [SisteAvT_05], [SisteAvT_06]
FROM Temp_Samples2;
Это текущий результатЯ получаю, и столбец и строки противоположны тому, что мне нужно:
Чтобы уточнить, что мне нужно:
1) Первый столбец для перечисленияназвания всех датчиков температуры (T_01, T_02, T_03 и т. д.).
2) Второй столбец для отображения последней строки данных датчика из таблицы 1 (dbo.Temp_1min).
3) Третий столбец для отображения последней строки данных датчика из таблицы 2(dbo.Temp_2min)
4) Четвертый столбец со списком последней строки данных датчика из таблицы 3 (dbo.Temp_3min)
и т. д. *
Столбец«TheTime» не имеет отношения к конечному результату и должен быть скрыт, поскольку время зависит от имен в таблицах (1 мин, 2 мин, 3 мин и т. Д.)
Согласно запросу данные, содержащиеся в базе данных MS SQLдля [dbo.Temp_1min]:
TheTime T_01 T_02 T_03 T_04 T_05 T_06
----------------------- ------------- ------------- ------------- ------------- ------------- -------------
2018-05-24 15:18:37.000 -0,080911 -0,051013 0,090363 0,034291 -0,096702 -0,016438
2018-05-25 15:04:22.010 0,095227 0,021559 -0,099226 -0,003178 0,099815 -0,015269
2018-05-25 15:04:23.003 0,095226 0,021562 -0,099226 -0,003181 0,099815 -0,015265
2018-05-25 20:06:17.000 0,061521 0,072766 -0,075043 -0,058863 0,085937 0,042978
2018-05-25 20:12:47.000 60,50084 73,64336 -74,18618 -59,89857 85,27211 44,13688
2018-05-25 20:12:47.000 60,50084 73,66345 -74,16626 -59,92236 85,25659 44,16353
2018-05-25 20:06:17.000 0,061521 0,072787 -0,075024 -0,058887 0,085922 0,043005
2018-05-25 20:10:40.003 60,83407 73,37933 -74,46661 -59,5624 85,49031 43,7604
2018-05-25 20:10:40.003 60,83407 73,37933 -74,44677 -59,58627 85,47488 43,78712
2018-05-25 20:23:07.003 58,85883 75,03191 -72,77819 -61,54791 84,16943 45,98995
(затронуто 10 строк)