如何按照卖家姓名排序结果并保持汇总信息在底部?
由于分组应用于嵌套的SELECT语句中,因此无法使用ORDER BY;而由于分组未应用于顶层,也不能使用GROUPING。
请点击此处查看SQL Fiddle中的工作示例。
由于分组应用于嵌套的SELECT语句中,因此无法使用ORDER BY;而由于分组未应用于顶层,也不能使用GROUPING。
请点击此处查看SQL Fiddle中的工作示例。
CREATE TABLE Sales
(
SellerID INT
, StoreID INT
, Price MONEY
);
CREATE TABLE Sellers
(
SellerID INT
, Name VARCHAR(50)
)
INSERT INTO Sales VALUES
(1, 1, 100),
(1, 1, 100),
(1, 1, 100),
(2, 2, 200),
(2, 2, 200),
(3, 2, 250),
(3, 2, 250),
(3, 2, 250),
(3, 2, 250);
INSERT INTO Sellers VALUES
(1, 'C. Thirdplace'),
(2, 'A. Firstplace'),
(3, 'B. Secondplace');
SELECT s.Name AS Seller_Name
, x.TotalSales AS Total_Sales
FROM
(
SELECT s.SellerID AS SellerID
, SUM(s.Price) AS TotalSales
FROM Sales s
GROUP BY s.SellerID
WITH ROLLUP
) x
LEFT JOIN Sellers s
ON s.SellerID = x.SellerID;
它产生了以下结果:
SELLER_NAME TOTAL_SALES
--------------- -----------
C. Thirdplace 300
A. Firstplace 400
B. Secondplace 1000
(null) 1700
ORDER BY
默认为ASC
,因此0, <name>
记录将出现在1, NULL
记录之前。 - MatBailie