【发布时间】:2014-06-23 05:11:28
【问题描述】:
这是我的桌子[Property]:
Loanno Balance amount PropertyType
-------------------------------------
1001045 308731.770000 1
1001045 2007700.740000 2
1001045 3087318905.770 3
1001045 308731.770000 4
1001046 306589.67 1
1001046 456321.23 1
1001046 6932542.89 1
1001047 965421.34 Null
1001047 965421.34 2
1001048 567894.34 1
1001048 567894.34 2
我必须获取具有最高 balance amount 的 [Loanno] 的属性类型。如果在最高的balance amount 中有一个平局,并且如果loannumber 的Property type 不同,那么对于那个Loan number,我必须将property type 填充为“8”。所以我的最终输出应该是这样的:
Loanno PropertyType
---------------------
1001045 3
1001046 1
1001047 1
1001048 8
这是我尝试过的查询。这是@Gord 建议的。
SELECT DISTINCT
[Property].Loanno,
IIf(Loanno_MaxBalance_Count.RowCount>1, 8, [Property].PropertyType) AS PropertyType
FROM
[Property]
INNER JOIN
(
SELECT
[Property].Loanno,
[Property].[Balance amount],
COUNT(*) AS RowCount
FROM
[Property]
INNER JOIN
(
SELECT
Loanno,
MAX([Balance amount]) AS MaxBalance
FROM [Property]
GROUP BY Loanno
) AS Loanno_MaxBalance
ON Loanno_MaxBalance.Loanno=[Property].Loanno
AND Loanno_MaxBalance.MaxBalance=[Property].[Balance amount]
GROUP BY [Property].Loanno, [Property].[Balance amount]
) AS Loanno_MaxBalance_Count
ON [Property].Loanno=Loanno_MaxBalance_Count.Loanno
AND [Property].[Balance amount]=Loanno_MaxBalance_Count.[Balance amount]
但这里的问题是Loan no 1001047,最高的Balance amount 965421.34 是Property type 作为1 和空。因此,上面的查询返回property type 作为8。相反,我希望它是 1。一般来说,如果 Property type 不同,并且如果它不为 null 我想要 8 ,则最高 balance amount 。否则 property type 应该是一个非 NULL 值。
对此的任何帮助将不胜感激。
【问题讨论】:
标签: sql ms-access group-by max