您可以通过此查询获取所需输出的最后一行以外的所有内容。@H_419_1@
SELECT
y.Product,
y.Total,
Format((y.Total/sub.SumOfTotal),'#.##%') AS Percentage
FROM
YourTable AS y,
(
SELECT Sum(Total) AS SumOfTotal
FROM YourTable
) AS sub;
由于该查询不包含JOIN
或WHERE
条件,因此它将返回表与子查询的单行之间的交叉联接。@H_419_1@
如果您需要问题示例的最后一行,则可以UNION
查询另一行,该查询返回所需的伪造行。在此示例中,我使用了一个自定义的Dual表,该表设计为始终仅包含一行。但是您可以替换另一个返回单行的表或查询。@H_419_1@
SELECT
y.Product,
y.Total,
Format((y.Total/sub.SumOfTotal),'#.##%') AS Percentage
FROM
YourTable AS y,
(
SELECT Sum(Total) AS SumOfTotal
FROM YourTable
) AS sub
UNION ALL
SELECT
'Product',
DSum('Total', 'YourTable'),
'100%'
FROM Dual;