根据SQL中另一列的最大值选择两列
嗨,这是我用的那张桌子根据SQL中另一列的最大值选择两列,sql,ms-access,max,Sql,Ms Access,Max,嗨,这是我用的那张桌子 Loanno Balance amount DueDATE 1001045 308731.770000 12/31/99 1001045 2007700.740000 12/31/99 1001045 3087318905.770000 11/01/99 1001045 308731.770000 12/31/99 我必须根据余额金额的最大值选择Loanno和DueDate。 Loanno不是唯一的。请帮我解决这个问题。试试这个: SELECT L.L
Loanno Balance amount DueDATE
1001045 308731.770000 12/31/99
1001045 2007700.740000 12/31/99
1001045 3087318905.770000 11/01/99
1001045 308731.770000 12/31/99
我必须根据余额金额的最大值选择Loanno
和DueDate
。
Loanno
不是唯一的。请帮我解决这个问题。试试这个:
SELECT L.Loanno, L.Balanceamount, L.DueDate
FROM dbo.Loan L
INNER JOIN
(
SELECT Loanno, MAX(Balancemount) as MaxBalance FROM dbo.Loan
GROUP BY LoanNo
) SUB ON L.Loanno = SUB.Loanno AND L.Balanceamount = SUB.MaxBalance
子查询返回每个贷款的最大余额
(不考虑日期)
当合并回原始表时,剩下的是LoanNo、最大余额和到期日期
好的,刚刚在MS ACCESS中测试了下面的查询,它工作正常,用实际的表名替换Table1
:
SELECT T.LoanNo, T.DueDate, T.BalanceAmount
FROM Table1 As T
INNER JOIN (
SELECT T.Loanno, Max([T.Balanceamount]) AS MaxBalance
FROM Table1 as T
GROUP BY T.Loanno) SUB ON T.LoanNo = SUB.LoanNo AND T.BalanceAmount = SUB.MaxBalance
试试这个:
SELECT L.Loanno, L.Balanceamount, L.DueDate
FROM dbo.Loan L
INNER JOIN
(
SELECT Loanno, MAX(Balancemount) as MaxBalance FROM dbo.Loan
GROUP BY LoanNo
) SUB ON L.Loanno = SUB.Loanno AND L.Balanceamount = SUB.MaxBalance
子查询返回每个贷款的最大余额
(不考虑日期)
当合并回原始表时,剩下的是LoanNo、最大余额和到期日期
好的,刚刚在MS ACCESS中测试了下面的查询,它工作正常,用实际的表名替换Table1
:
SELECT T.LoanNo, T.DueDate, T.BalanceAmount
FROM Table1 As T
INNER JOIN (
SELECT T.Loanno, Max([T.Balanceamount]) AS MaxBalance
FROM Table1 as T
GROUP BY T.Loanno) SUB ON T.LoanNo = SUB.LoanNo AND T.BalanceAmount = SUB.MaxBalance
在SQLServer2005+中,可以使用排名函数
;WITH cte AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY Loanno ORDER BY [Balance Amount] DESC) AS rn
FROM dbo.your_tableName
)
SELECT Loanno, DueDate
FROM cte
WHERE rn = 1
在SQLServer2005+中,可以使用排名函数
;WITH cte AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY Loanno ORDER BY [Balance Amount] DESC) AS rn
FROM dbo.your_tableName
)
SELECT Loanno, DueDate
FROM cte
WHERE rn = 1
试试这个-:
SELECT Loanno ,DueDate
FROM
(SELECT Loanno ,DueDate , MAX(Balance amount) BAL_AMT
FROM Loandetails
GROUP BY Loanno ,DueDate
)
试试这个-:
SELECT Loanno ,DueDate
FROM
(SELECT Loanno ,DueDate , MAX(Balance amount) BAL_AMT
FROM Loandetails
GROUP BY Loanno ,DueDate
)
这将起作用,一个子查询将返回余额字段的最大值,然后使用该值查找具有相同值的一条(或多条)记录
select LoanNo, DueDate
from _LoanData
where Balance = (
select max(Balance)
from _loandata
)
或者这个,它从一个按余额降序排列的列表中提取前1条(第一条记录)。就性能而言,这要慢一些
select top 1 LoanNo, DueDate, Balance
from _LoanData
order by Balance desc
祝你好运。这将起作用,子查询将返回余额字段的最大值,然后使用该字段查找具有相同值的一条(或多条)记录
select LoanNo, DueDate
from _LoanData
where Balance = (
select max(Balance)
from _loandata
)
或者这个,它从一个按余额降序排列的列表中提取前1条(第一条记录)。就性能而言,这要慢一些
select top 1 LoanNo, DueDate, Balance
from _LoanData
order by Balance desc
祝你好运。你在使用哪种RDBMS?你在使用哪种RDBMS?按Loanno和DueDate分组无助于找到最大余额到期的日期,它只会找到唯一日期的最大余额。是的,你是正确的CSL。我误解了这个问题。它应该是按Loanno计算的最大余额。按Loanno和DueDate分组无助于查找最大余额的到期日期,它只会查找唯一日期的最大余额。是的,您是正确的CSL。我误解了这个问题。它应该是Loanno的最大余额。只有当我有一个贷款编号时,这才有效…如果我有多个贷款编号呢?Brian,虽然样本数据集没有说明这一点,但我会暗示在同一个表中可能有不同的Loanno记录,在这种情况下,您的查询不起作用,因为它们只针对总余额最高的贷款,而不是按贷款。请选择前1名贷款否、到期日、来自_loanadaorder by Balance desc、到期日desc。。。这将返回具有最高(最大)到期日的最大余额这仅在我有一个贷款编号时有效…如果我有多个贷款编号会怎么样?Brian,虽然示例数据集没有说明这一点,但我会暗示在同一个表中可能有不同的贷款无记录,在这种情况下,您的查询不起作用,因为它们只针对总余额最高的贷款,而不是按贷款。请选择前1名贷款否、到期日、来自_loanadaorder by Balance desc、到期日desc。。。这将返回具有最高(最大)到期日的最大余额