按总和排序,而不像行一样分组
Order By Sums, while not grouping like rows
假设我有这样的数据作为查询结果
SKU | STOCK | SNACK | FLAVOR
1234 45 Chips BBQ
1236 87 Chips BBQ
2345 12 Pretzel Bacon
3456 51 Chips Ranch
4567 32 Pretzel Classic
5678 142 Candy Chocolate
... ... ... ...
是否可以在 ORDER BY
行中包含 SQL 以显示上述数据,这些数据首先按具有最大 SUM(Stock)
然后按 Stock DESC
而不合并任何条目?我简单地尝试使用类似于
的行
ORDER BY
SUM(Snack) DESC,
SUM(Flavor) DESC,
Stock DESC
但无法确定 GROUP BY
语句的布局方式。
尝试以下SQL
select sku, stock, data.snack, flavor, summ = summ.summ
from data
join (select snack, summ = sum(stock) from data group by snack) as summ
on summ.snack = data.snack
order by summ desc, stock desc
SKU|STOCK|SNACK|FLAVOR|SUMM
1236 87 Chips BBQ 183
3456 51 Chips Ranch 183
1234 45 Chips BBQ 183
5678 142 Candy Chocolate 142
4567 32 Pretzel Classic 44
2345 12 Pretzel Bacon 44
您可以使用 DSum
计算每个 SNACK 的总 STOCK,而无需 GROUP BY
。并在 ORDER BY
中使用 Dsum
。我还需要在 DSum
值上使用 Val()
以使其正确排序。
SELECT y.SKU, y.STOCK, y.SNACK, y.FLAVOR
FROM YourTable AS y
ORDER BY
Val(DSum("[STOCK]", "YourTable", "[SNACK]='" & y.SNACK & "'")) DESC,
y.STOCK DESC;
请注意 DSum
是特定于 Access 的,因此如果您想要一个可以移植到另一个数据库的查询,这不适合。
假设我有这样的数据作为查询结果
SKU | STOCK | SNACK | FLAVOR
1234 45 Chips BBQ
1236 87 Chips BBQ
2345 12 Pretzel Bacon
3456 51 Chips Ranch
4567 32 Pretzel Classic
5678 142 Candy Chocolate
... ... ... ...
是否可以在 ORDER BY
行中包含 SQL 以显示上述数据,这些数据首先按具有最大 SUM(Stock)
然后按 Stock DESC
而不合并任何条目?我简单地尝试使用类似于
ORDER BY
SUM(Snack) DESC,
SUM(Flavor) DESC,
Stock DESC
但无法确定 GROUP BY
语句的布局方式。
尝试以下SQL
select sku, stock, data.snack, flavor, summ = summ.summ
from data
join (select snack, summ = sum(stock) from data group by snack) as summ
on summ.snack = data.snack
order by summ desc, stock desc
SKU|STOCK|SNACK|FLAVOR|SUMM
1236 87 Chips BBQ 183
3456 51 Chips Ranch 183
1234 45 Chips BBQ 183
5678 142 Candy Chocolate 142
4567 32 Pretzel Classic 44
2345 12 Pretzel Bacon 44
您可以使用 DSum
计算每个 SNACK 的总 STOCK,而无需 GROUP BY
。并在 ORDER BY
中使用 Dsum
。我还需要在 DSum
值上使用 Val()
以使其正确排序。
SELECT y.SKU, y.STOCK, y.SNACK, y.FLAVOR
FROM YourTable AS y
ORDER BY
Val(DSum("[STOCK]", "YourTable", "[SNACK]='" & y.SNACK & "'")) DESC,
y.STOCK DESC;
请注意 DSum
是特定于 Access 的,因此如果您想要一个可以移植到另一个数据库的查询,这不适合。