我正在尋找關於優化以下示例查詢和處理結果的建議。在使用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}?在這些情況下,期望的結果是什麼? –