Повторите select/ операцию подачи аргументов из списка или массива SQL
Очень плохо знаком с SQL и мог бы использовать некоторые советы / идеи.
Я использую SQL-запрос для извлечения и форматирования данных из существующей таблицы (Wonderware/Runtime/AnalogSummaryHistory) в Excel 2010. Мой запрос работает для получения желаемого формата результата, но только для одной / общей функции агрегирования. Я не могу понять, как связать отдельные агрегатные функции с каждым интересующим тегом.
Я хотел бы улучшить его для следующей функциональности.
Я хотел бы определить список (ы), (жестко закодированный в порядке, динамический список, извлеченный из диапазона ячеек Excel было бы еще более хитрым),
Теги -> (Tag1, Tag2,...)
Func ---------> (AggType1, AggType2,...)
где AggTypeX будет типом агрегатной функции, которую я хочу для соответствующего TagX (MIN/MAX/AVG/LAST и т. д., доступный как данные столбца в существующей исходной таблице)(AggTypes в определенном списке может повториться), то я бы хотел иметь запрос выполняется через этот список (списки) для создания результата столбцов TagX с соответствующими значениями данных агрегированного типа функции. Я бы предпочел, чтобы результирующие столбцы упорядочивались LR в последовательности, определенной в начальном списке тегов.
Кроме того, я хотел бы иметь возможность выполнить этот запрос в определении соединения Excel 2010. * Я попытался построить оригинальный запрос, используя временные таблицы, но не могу запустить его в Excel. Появляется бомба на вставке, чтобы заполнить временную таблицу. Может быть, моя неопытность, может быть ограничением Excel, DK.
Результат, который я ищу:
ShortDate | Tag1 | Tag2
-------------------------------------------------------------------
Date1 | Tag1Date1Agg1Val | Tag2Date1Agg2Val
Date2 | Tag1Date2Agg1Val | Tag2Date2Agg2Val
Очень ценю любые отзывы.
Мой текущий запрос / настройка:
Существующая таблица (AnalogSummaryHistory):
StartDateTime | TagName | Aggregate (ex. LAST)
--------------------------------------------------------------
Date1 | Tag1 | Tag1Date1AggVal
Date2 | Tag1 | Tag1Date2AggVal
Date1 | Tag2 | Tag2Date1AggVal
Date2 | Tag2 | Tag2Date2AggVal
Мой запрос:
select * from
(
SELECT top 100 percent convert(varchar(10), StartDateTime, 101) as ShortDate, TagName, Last
FROM AnalogSummaryHistory
WHERE TagName IN ('Tag1','Tag2')
AND wwVersion = 'Latest'
AND wwRetrievalMode = 'Cyclic'
AND wwResolution=24*60*60*1000
AND StartDateTime >= '20171001 00:00:00.000'
AND EndDateTime <= '20171101 00:00:00.000'
)x
pivot
(
max(Last)
for Tagname in ([Tag1],[Tag2])
) pvt
Результат:
ShortDate | Tag1 | Tag2
--------------------------------------------------------------
Date1 | Tag1Date1AggVal | Tag2Date1AggVal
Date2 | Tag1Date2AggVal | Tag2Date2AggVal