[英]SQL condition for ordering base on a group by
如何訂購一些數據,以 StockID 為 3 為基礎,在這種情況下還有兩個倉庫,WarehouseId 1 和 13,
select ProductID, WarehouseID, StockID
from @allStocksState
group by ProductID, WarehouseID, StockID
order by CASE WHEN StockID = 3 then 0
else 1
end
結果:
7002 13 3
7003 1 3
7003 13 3
7012 1 3
7012 13 3
6995 1 3
7020 13 3
7031 13 3
7045 1 3
7045 13 3
7046 1 3
7046 13 3
因此,在 6995,7020,7031 的情況下,應該出現在最后,因為在這種情況下,它們每個只有一個 WarehouseId,那么我需要對查詢進行哪些更改? 任何幫助將非常感激。
您可以按以下order by
使用窗口函數:
select ProductID, WarehouseID, StockID
from @allStocksState
group by ProductID, WarehouseID, StockID
order by count(*) over (partition by productid) desc,
(case when StockID = 3 then 0 else 1 end);
count(*) over (partition by productid)
計算有多少行具有相同的productid
。
select ProductID,WarehouseID,StockID from @allStocksState
group by ProductID,WarehouseID,StockID
order by CASE WHEN StockID=3 then
"ASC" else
"DESC" end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.