SQL以有序方式组合2个结果集

SQL以有序方式组合2个结果集,sql,Sql,有没有办法将两个查询排序到一个结果集中 更具体地说,如果我有两个问题: select 'line',product, numeric_value from numbertable order by product; select 'Total',product, sum(numeric_value) from numbertable group by product; 是否有一种方法可以组合这两个查询,使结果集如下所示: Type Product numeric_

有没有办法将两个查询排序到一个结果集中

更具体地说,如果我有两个问题:

select 'line',product, numeric_value from numbertable order by product;

select 'Total',product, sum(numeric_value) from numbertable group by product;
是否有一种方法可以组合这两个查询,使结果集如下所示:

    Type      Product      numeric_value

    line      item1        23
    line      item1        57
    line      item1        23
    Total     item1        103
    line      item5        20
    line      item5        50
    line      item5        60
    Total     item5        130
    ...
基本上,我希望列出一个产品的所有项目记录,然后显示它们的总和,然后列出下一个产品的所有项目记录,等等

有没有办法做到这一点,或者这是一项不可能完成的任务?
谢谢:)

在许多数据库中,您可以使用
汇总来完成此操作。然而,既然你已经走了这么远:

select *
from ((select 'line' as which, product, numeric_value from numbertable
      ) union all
      (select 'Total', product, sum(numeric_value) from numbertable group by product
      )
     ) t
order by Product, which

按产品排序的
将所有产品线汇集在一起。“总计”是最后一个排序结果。

请通过添加适当的标记(Oracle、SQL Server、MySQL等)来指定目标RDBMS。可能有一些答案利用了并非普遍支持的语言或产品功能。此外,通过使用特定的RDBMS标记,您的问题可能会得到更适合回答它的人的注意。在这种情况下,我将执行一个
联合
,然后按产品排序,键入
。这只是因为
Total
大于
line
。Rolan什么数据库服务器?这使用的是oracle 11g服务器令人惊讶的是,在SQL server中,您可以这样做:
(选择a=1,b=2联合所有选择3,4)按a排序
这样,在DBMS中可能不需要外部
SELECT
或派生表别名。@ErikE。我几乎总是在
from
子句中编写我的
unions
。这样,我就不必记住,
where
适用于最后一个查询,但
orderby
适用于整个集合。
limit
适用于整个集合,但
groupby
仅适用于最后一个查询。这就是上面代码中括号的作用!您会得到完全相同的效果,看到
排序依据
仅适用于整个集合,而任何
分组依据
都不适用。完美!谢谢关于安排sql执行我的投标,我似乎有很多东西需要学习:)