Sql 将输出合并为一个

Sql 将输出合并为一个,sql,oracle,Sql,Oracle,示例输出: Select Category, Books.ISBN, Orderitems.Quantity * (Books.Retail - Books.Cost) AS Category_Profit From BOoks INNER JOIN Orderitems ON BOOKS.ISBN=ORDERITEMS.ISBN 诸如此类 如何使输出将每个类别的所有值计算到一行中 即 使用groupby和SUM,语法: Family Life 1234 200

示例输出:

    Select Category, Books.ISBN,
Orderitems.Quantity * (Books.Retail - Books.Cost) AS Category_Profit
From BOoks
INNER JOIN Orderitems
ON BOOKS.ISBN=ORDERITEMS.ISBN
诸如此类

如何使输出将每个类别的所有值计算到一行中


使用
groupby
SUM
,语法:

Family Life        1234     200
Fitness            4321     30
参考:

在您的工作台上,您可以运行:

SELECT column_name, SUM(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
表1:

Select Category, ISBN, Sum(Category_Profit) From Table1
group by Category, ISBN;
输出:

Category            ISBN           Category_Profit
Family life         1234                 50
Family Life         1234                 50
Family Life         1234                 100
Fitness             4321                 10
Fitness             4321                 20

因为您已经将此作为一个起点,所以请准确地使用临时表,并从中提取数据:

|    Category | ISBN | Sum(Category_Profit) |
|-------------|------|----------------------|
| Family life | 1234 |                  200 |
|     Fitness | 4321 |                   30 |
您将数据组织得非常好,因此很容易实现利润汇总。您可以按类别和ISBN分组,以获得这些列的所有唯一对以及相应的利润

如果您不想使用子查询,您可以在查询中求和(但我觉得在更改之前将现有查询用作子查询是很有帮助的,只是为了确保它能够工作:

Select Category, ISBN, Sum(Category_Profit) From
(
select Category, Books.ISBN as ISBN,
Orderitems.Quantity * (Books.Retail - Books.Cost) AS Category_Profit
From Books
INNER JOIN Orderitems
ON BOOKS.ISBN=ORDERITEMS.ISBN
) temp
group by Category, ISBN

分组可以用来解决您的问题

注意:在GROUPBY子句中,可以根据某些列对一组表行进行分组,在select子句中,可以显示GROUPBY列或其他列上的聚合函数(SUM、MIN、MAX、Count等)

参考:

使用分组方式,如下所示。希望这能解决问题

select Category, Books.ISBN,
SUM(Orderitems.Quantity * (Books.Retail - Books.Cost)) AS Category_Profit
From Books
INNER JOIN Orderitems
ON BOOKS.ISBN=ORDERITEMS.ISBN
 temp
group by Category, Books.ISBN

因此,我现在拥有的是每个类别中不同的ISBN,即Cat、ISBN、Price(Comp 1234 50)(Comp 3333 50)再次合并这两个是group by或sum的另一个用途吗?我在想sum,也许我可以找到一种方法来计算类别中的所有ISBN。因此,我的第一组代码向您展示了如何从表中提取数据。使用精确的查询,但在其周围放上括号(您的查询),然后选择Cat、ISBN和sum(类别)从(您的查询)类别分类中,ISBN如果类别家庭生活附加了两个不同的ISBN号码怎么办?所以ISBN 1234和1235都在类别家庭生活中。您想在同一行中用逗号分隔它们吗?可能吗?是的,您可以这样做。请阅读以下内容:
select Category, Books.ISBN,
SUM(Orderitems.Quantity * (Books.Retail - Books.Cost)) AS Category_Profit
From Books
INNER JOIN Orderitems
ON BOOKS.ISBN=ORDERITEMS.ISBN
 temp
group by Category, Books.ISBN
 Select Category, Books.ISBN,
 SUM(Orderitems.Quantity * (Books.Retail - Books.Cost)) AS Category_Profit
 From BOoks
 INNER JOIN Orderitems
 ON BOOKS.ISBN=ORDERITEMS.ISBN
 Group by Category,ISBN