假设有包含3个数字字段的以下表格:
Images (table)
--------------
Width
Height
Amount
Width和Height是以毫米为单位的图像尺寸。现在,我想创建一个报告,根据它们以厘米为单位的尺寸分组图像数量。这意味着我必须按2个不存在的列进行GROUP BY。
我可以这样做:
SELECT ROUND(Width/10,0) AS W
, ROUND(Height/10,0) AS H
, SUM(Amount) AS A
FROM IMAGES
GROUP BY Width
, Height
ORDER BY W
, H
, A
但是这样只会在视图层面上将毫米转换为厘米,导致相同尺寸出现多行。
例如:
W H A
--- --- -
150 159 2
150 160 1
不会导致1个类别
W H A
-- -- -
15 16 3
但是在
W H A
-- -- -
15 16 2
15 16 1
目标引擎实际上是一个FileMaker数据库,不幸的是,在GROUP BY子句中似乎不支持聚合函数。
FROM(SELECT ROUND(Width/10,0) AS W, ROUND(Height/10,0) AS H, Amount FROM IMAGES)AS data
替换FROM IMAGES
。然后你可以通过SELECT W,H
进行分组,并通过GROUP BY W,H
和ORDER BY W,H
进行排序,并且知道所有对W,H
的引用始终指的是派生列,而不必重复计算。 - MatBailie