Я ищу совет по оптимизации следующего примерного запроса и обработки результата. Вариант SQL-использование представляет собой двигатель внутреннего FileMaker ExecuteSQL который ограничен ЗЕЬЕСТ со следующим синтаксисом:Оптимизировать SQL-запрос и результат процесса
SELECT [DISTINCT] {* | column_expression [[AS] column_alias],...}
FROM table_name [table_alias], ...
[ WHERE expr1 rel_operator expr2 ]
[ GROUP BY {column_expression, ...} ]
[ HAVING expr1 rel_operator expr2 ]
[ UNION [ALL] (SELECT...) ]
[ ORDER BY {sort_expression [DESC | ASC]}, ... ]
[ OFFSET n {ROWS | ROW} ]
[ FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]
[ FOR UPDATE [OF {column_expression, ...}] ]
запрос:
SELECT item1 as val ,interval, interval_next FROM meddata
WHERE fk = 12 AND active1 = 1 UNION
SELECT item2 as val ,interval, interval_next FROM meddata
WHERE fk = 12 AND active2 = 1 UNION
SELECT item3 as val ,interval, interval_next FROM meddata
WHERE fk = 12 AND active3 = 1 UNION
SELECT item4 as val ,interval, interval_next FROM meddata
WHERE fk = 12 AND active4 = 1 ORDER BY val
Это может дать следующий результат в качестве образца:
val,interval,interval_next
Artelac,0,1
Artelac,3,6
Celluvisc,1,3
Celluvisc,12,24
Я ищу, чтобы достичь (в дополнение к предложениям по оптимизации) является результатом отформатирован следующим образом:
val,interval,interval_next,interval,interval_next,interval,interval_next,interval,interval_next ->etc
Artelac,0,1,3,6
Celluvisc,1,3,12,24
Желательно, чтобы этот обработанный результат был подготовлен механизмом SQL.
Возможно?
спасибо.
EDIT: Я включил имена столбцов в результат для ясности, хотя они не являются частью результата. Я хочу проиллюстрировать, что в результате может быть произвольное количество столбцов «interval» и «interval_next».
Есть ли в этом случае предложение «case when then»? – wonderbell
@wonderbell Да, 'case when then' поддерживается. – AndreasT
Может ли отдельный val (например, Artelac) найти только одну строку? Его можно найти более чем в 2 строках? Например, можете ли вы: {Артелак, 0,1}, {Артелак, 3,6} и {Артелак, 4,8}? В таких случаях, какими будут ожидаемые результаты? –