【问题标题】:Query to populate a column in MS Access based on the Maximum value of another column查询以根据另一列的最大值填充 MS Access 中的列
【发布时间】: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 中有一个平局,并且如果loannumberProperty 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.34Property type 作为1 和空。因此,上面的查询返回property type 作为8。相反,我希望它是 1。一般来说,如果 Property type 不同,并且如果它不为 null 我想要 8 ,则最高 balance amount 。否则 property type 应该是一个非 NULL 值。 对此的任何帮助将不胜感激。

【问题讨论】:

    标签: sql ms-access group-by max


    【解决方案1】:

    这是你想要的吗?

    select LoanNo,
           iif(min(PropertyType) = max(PropertyType), min(PropertyType), 8) as PropertyType
    from property as p inner join
         (select LoanNo, max(BalanceAmount) as maxba
          from property
          group by LoanNo
         ) as pmax
         on p.LoanNo = pmax.LoanNo and p.BalanceAMount = pmax.maxba
    group by LoanNo;
    

    【讨论】:

    • 不,我的要求是贷款号,应该填写与最大余额金额对应的属性类型。如果属性类型不同?(除了 NULL)最大余额金额应填充 8。即使最大余额金额不同,上述查询也会填充 8。
    • @user2416710 。 . .尝试使用增强的on 子句。我遗漏了一半的join 条件。
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2023-03-12
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    相关资源
    最近更新 更多