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执行我的投标,我似乎有很多东西需要学习:)