[英]How to Select Column With Max Value In T-SQL?
我正在嘗試找到銷售額最多的月份,我已經能夠使用以下方式顯示每個月的銷售額:
SELECT Month(orderdate) AS Month,
Year(orderdate) AS Year,
Sum(salesorderid) AS Sales
FROM sales.salesorderheader
GROUP BY Month(orderdate),
Year(orderdate)
這表明
但我只想 select 銷量最高的月份。
如果我是正確的,您想打印具有最大銷售額的單個結果這里“salesorderid”是該月的總銷售額
SELECT Month(orderdate) AS Month,
Year(orderdate) AS Year,
MAX(Sum(salesorderid)) AS Sales
FROM sales.salesorderheader
GROUP BY Month(orderdate),
Year(orderdate)
SELECT Month(orderdate) AS Month,
Year(orderdate) AS Year,
Sum(salesorderid) AS Sales
FROM sales.salesorderheader
GROUP BY Month(orderdate),
Year(orderdate)
HAVING MAX(Sum(salesorderid))
因為 Sum(salesorderid) 是總銷售額,這可能有效......
您必須先按year
group
,然后按month
分組。 然后使用count()
而不是sum()
(似乎你的列是 SalesOrderID),但如果你試圖獲得sum of sales
它應該類似於sum(salesamount)
。 還要更改您的column aliases
,這些是sql keywords
。
select month(OrderDate) as oMonth, year(OrderDate) as oYear
, count(1) as SalesCount
from SalesOrderHeader
group by year(OrderDate), month(OrderDate)
獲得most number of sales
。
select top 1 * from (
select month(OrderDate) as oMonth, year(OrderDate) as oYear
, count(1) as SalesCount
from SalesOrderHeader
group by year(OrderDate), month(OrderDate)) t1
order by t1.SalesCount desc
只需使用top (1)
:
SELECT TOP (1) Month(orderdate) AS Month,
Year(orderdate) AS Year,
Sum(salesorderid) AS Sales
FROM sales.salesorderheader
GROUP BY Month(orderdate), Year(orderdate)
ORDER BY Sales DESC;
你可以試試
ORDER BY
"字段名" DESC
ORDER BY
function 無法運行。 所以你可以改變之前,使用CAST("field name" AS Decimal)
檢查下面的代碼片段
SELECT Month(a.orderdate) AS Month,
Year(a.orderdate) AS Year,
Sum(a.salesorderid) AS Sales
FROM sales.salesorderheader a
GROUP BY Month(a.orderdate),Year(a.orderdate)
ORDER BY CAST(a.Sum(a.salesorderid), AS Decimal) DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.