select 行的最大值(列值)如何按 SQL 中的另一列分组?

How do select row with max(column value) group by another column in SQL?

我不知道如何select 将具有最大列值的行按另一列分组。我有 T-SQL

CREATE PROC GET_USER
AS
BEGIN
SELECT  A.USER_ID, B.START_DATE , D.START_DATE, A.FULL_NAME,A.COST_CENTER,
F.DEPARTMENT_NAME,G.BU_NAME
FROM USERS A INNER JOIN USER_PERSON B ON A.USER_ID=B.USER_ID
INNER JOIN TYPE_PERSON C ON C.TYPE_PERSON_ID = B.TYPE_PERSON_ID
INNER JOIN USER_TRANSACTION D ON D.USER_ID = A.USER_ID
INNER JOIN TRANSACTIONS E ON E.TRANSACTION_ID = D.TRANSACTION_ID
INNER JOIN DEPARTMENT F ON F.DEPARTMENT_ID = D.DEPARTMENT_ID
INNER JOIN BUS_UNIT G ON G.BU_ID = D.BU_ID
INNER JOIN BRANCH H ON H.BRANCH_ID = D.BRANCH_ID
INNER JOIN POSITION J ON J.POSITION_ID = D.POSITION_ID
WHERE A.FLAG = 'TRUE' 
END

结果将 select max(B.START_DATE) 和 max(D.START_DATE) 并按 USER_ID

分组

试试这个

SELECT  T.USER_ID ,
        MAX(T.START_DATE) AS [Max First Start Date] ,
        MAX(T.[Second Start Date]) AS [Max Second Start Date]
FROM    ( SELECT    A.USER_ID ,
                    B.START_DATE ,
                    D.START_DATE AS [Second Start Date] ,
                    A.FULL_NAME ,
                    A.COST_CENTER ,
                    F.DEPARTMENT_NAME ,
                    G.BU_NAME
          FROM      USERS A
                    INNER JOIN USER_PERSON B ON A.USER_ID = B.USER_ID
                    INNER JOIN TYPE_PERSON C ON C.TYPE_PERSON_ID = B.TYPE_PERSON_ID
                    INNER JOIN USER_TRANSACTION D ON D.USER_ID = A.USER_ID
                    INNER JOIN TRANSACTIONS E ON E.TRANSACTION_ID = D.TRANSACTION_ID
                    INNER JOIN DEPARTMENT F ON F.DEPARTMENT_ID = D.DEPARTMENT_ID
                    INNER JOIN BUS_UNIT G ON G.BU_ID = D.BU_ID
                    INNER JOIN BRANCH H ON H.BRANCH_ID = D.BRANCH_ID
                    INNER JOIN POSITION J ON J.POSITION_ID = D.POSITION_ID
          WHERE     A.FLAG = 'TRUE'
        ) AS T
GROUP BY T.USER_ID