分享
三行代码  ›  专栏  ›  技术社区  ›  Ryan Johnson

SQL Server查询-使用max函数检索多行 - SQL Server Query - retrieve multiple rows with max function

sql
  •  -2
  • Ryan Johnson  · 技术社区  · 1 周前

    我正在开发一个c桌面应用程序,在这个程序中,我遍历所有客户的循环。我不希望为每个客户执行select语句,而是希望可以执行一个查询来为所有客户收集行。

    SELECT CustID, Runtot 
    FROM AUDIT
    WHERE UID = (SELECT MAX(uid) FROM Audit WHERE CustID = 6)
    

    审计表: uid、custid、custindex、amount、runtot

    uid是一个identity列,custindex对客户插入的每一行进行迭代,runtot字段将根据数量上下移动。基本上,我需要的是通过查看每个客户的最大uid或custindex得到的最新runtot字段。

    2 回复  |  直到 1 周前
        1
  •  0
  •   Gordon Linoff    1 周前

    需要关联的子查询:

    SELECT a.CustID, a.Runtot 
    FROM AUDIT a
    WHERE a.UID = (SELECT MAX(a2.uid) FROM Audit a2 WHERE a2.CustID = a.CustID);
    
        2
  •  0
  •   mvoelcker    1 周前

    最有效的(在我看来,也是最干净的)方法是使用with子句

    WITH auditMax AS (
    SELECT MAX(a.uid), a.CustID
    FROM AUDIT a
    GROUP BY a.CustID
    )
    
    SELECT a.CustID, a.Runtot 
    FROM AUDIT a
    INNER JOIN auditMax cte
       on a.CustId = cte.CustId