我有一个查询,允许我检索客户订单。
Select ID, OrderID, Item, Price from customerOrders
Where Order = 1
有没有办法总计支付的最终金额并让它在下面显示,但仍然能够查看sql查询中所需的所有详细信息,例如
ID | OrderID | Item | Price
1 | 1 | Book | 9.99
2 | 1 | DVD | 12.99
total = 22.98
非常感谢提前
答案 0 :(得分:1)
您可以尝试COMPUTE
Select ID, OrderID, Item, Price from customerOrders
Where Order = 1
COMPUTE SUM(Price)
答案 1 :(得分:1)
两个步骤:
1,要生成SUM,需要使用UNION ALL将其添加到结果集。 UNION添加了一个不需要的DISTINCT操作,即使在你的情况下它也不会改变结果。
Select ID, OrderID, Item, Price from customerOrders
Where [Order] = 1
UNION ALL
Select NULL, NULL, NULL, SUM(Price) from customerOrders
Where [Order] = 1
ORDER BY CASE WHEN ID IS NULL THEN 2 ELSE 1 END, ID;
2,要按照您想要的顺序对其进行排序(总和在底部),您可以使用NULL ID作为标识符。
答案 2 :(得分:1)
从技术上讲,您想要的东西称为累积行。 SQL Server对这种情况有一个特殊的功能,它被称为ROLLUP()
并在GROUP BY
子句中使用。在您的特定情况下,查询基本上如下所示:
SELECT ID, OrderID, Item, SUM(Price) AS Price
FROM customerOrders
WHERE OrderID = 1
GROUP BY ROLLUP((ID, OrderID, Item))
;
您可以看到此查询at SQL Fiddle的实时演示。有关ROLLUP()
以及其他GROUP BY函数的更多信息,请参见at MSDN。
答案 3 :(得分:0)
这就是你需要的:
Select ID, OrderID, Item, Price from customerOrders
Where Order = 1
Union
Select NULL, NULL, NULL, (
Select Sum(Price) from customerOrders
Where Order = 1
Group By Order
)
<强>更新强>
如果结果为空,则总数应为零,不为空。使用更新的代码。
干杯