Повторите 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

0 ответов

Другие вопросы по тегам