如何将Order BY放在SQL UNION中,以便TOTALS始终显示为最后一行?

Rom*_*gan 3 sql oracle

我有SQL UNION,其中该语句的第二部分是代表TOTALS的行.我怎样才能将TOTALS总是显示为最后一行?

Wel*_*bog 10

向UNIONed的查询添加一个额外的列,并使该列成为ORDER BY子句中的第一列.

所以如果我开始这样的事情:

SELECT product, price
FROM table
UNION 
SELECT 'Total' AS product, SUM(price)
FROM table
Run Code Online (Sandbox Code Playgroud)

我会添加一个这样的新列:

SELECT product, price
FROM (
  SELECT product, price, 0 AS union_order
  FROM table
  UNION
  SELECT 'Total' AS product, SUM(price), 1 AS union_order
  FROM table
)
ORDER BY union_order
Run Code Online (Sandbox Code Playgroud)

这样,常规产品首先出现,然后总出现在最后.


Mar*_*ers 5

您是否尝试过使用GROUP BY ROLLUP- 它可能只是想要您想要的,虽然很难判断您何时没有发布您的查询.