這是針對 SQL Server 的。有沒有辦法根據另一列的值僅獲得一組選定列的最小值?在這個例子中,我想找到每個 Name 的最小交易并將其放在“最小交易”列中。我無法對“名稱”的值進行硬編碼。我試過一個子查詢,但我無法理解邏輯是如何作業的。
SELECT ID, Name, Transactions, Minimum Transaction =
(
SELECT MIN(Transactions)
FROM MyTable M
JOIN MyTable M ON N.ID = M.ID
)
FROM MyTable N
WHERE Name = 'Sarah' OR 'Sue' OR 'Joe' OR 'Tim'
預期結果
ID | Name | Transactions | Minimum Transaction
---------------------------------------------------
1 | Sarah | $5 | $1
2 | Sarah | $1 | $1
3 | Sue | $10 | $4
4 | Sue | $4 | $4
5 | Sue | $6 | $4
6 | Joe | $4 | $4
7 | Tim | $12 | $12
8 | Tim | $14 | $12
uj5u.com熱心網友回復:
使用MIN(Transactions) OVER(PARTITION BY Name):
SELECT ID, Name, Transactions,
MIN(transactions) over (partition by Name) as "Minimum Transaction" from
MyTable
order by id;
PARTITION BY而不是GROUP BY只影響視窗函式而不影響回傳的行。
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/390529.html
標籤:sql sql-server 子查询
上一篇:如果行不重復,或者行的ID不是SQLSSMS中的某個數字,則更新列
下一篇:如何加入自定義連接列
