我正在寻找关于优化以下示例查询和处理结果的建议。在使用SQL变种是内部的FileMaker的ExecuteSQL发动机,其可局限于SELECT语句的语法如下:优化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引擎生成。
可能吗?
谢谢。
编辑:为了清晰起见,我在结果中包括了列名,尽管它们不是结果的一部分。我想说明结果中可能有任意数量的'interval'和'interval_next'列。
它是否有'when then case'条款? – wonderbell
@wonderbell是的,支持'时候的情况'。 – AndreasT
只能在一行中找到独特的val(例如Artelac)吗?它可以在两行以上找到吗?例如,你可以有:{Artelac,0,1},{Artelac,3,6}和{Artelac,4,8}?在这些情况下,期望的结果是什么? –