Стороннее приложение, с которым я работаю (это НЕ Access, но использует библиотеку MDAC), имеет три таблицы доступа, структурированные следующим образом:
TagTable
TagName TagIndex TagType
peach 0 Float
apple 1 Float
grape 2 Float
cherry 3 String
и т. Д. Для многих других строк
FloatTable
DateAndTime TagIndex Value
03/02/2012 14:03:03 0 123.456
03/02/2012 14:03:03 1 123.456
03/02/2012 14:03:03 2 123.456
03/02/2012 14:06:05 0 456.789
03/02/2012 14:06:05 1 456.789
03/02/2012 14:06:05 2 456.789
И т. Д. Для многих других строк и времен
StringTable
DateAndTime TagIndex Value
03/02/2012 14:03:03 3 'Some string...'
03/02/2012 14:06:05 3 'Some other string'
И так далее для многих других строк и времен
Что я хочу сделать, это выполнить запрос или запустить код (VBA), чтобы получить набор записейкак это:
DateAndTime peach apple grape cherry
03/02/2012 14:03:03 123.456 123.456 123.456 'Some string...'
03/02/2012 14:06:05 456.789 456.789 456.789 'Some other string'
и т. д.
Обычно я бы делал это с "само присоединением" или объединениями без проблем.Проблема заключается в том, что в TagTable будет не менее 90+ строк, поэтому в результате будет более 90 столбцов.Я не вижу выполнения более 90 соединений в запросе, даже если бы Access мог это сделать.Я могу запустить некоторый код VBA в приложении, если это необходимо.Я рассматривал использование use TRANSFORM ... PIVOT, но агрегация не происходит.Я также посмотрел на запрос «кросс-таблицы», но это усложнит более 90 строк / столбцов.Я знаю, что могу сделать это с VBA, но я надеялся, что есть некоторая магия Jet SQL, которую я могу использовать, которая поможет.