Sql server 从组返回最大值

Sql server 从组返回最大值,sql-server,tsql,Sql Server,Tsql,我正在尝试创建一个视图,该视图将根据净值的最高总和返回APPROVER。我可以返回净值的总和,但在某些情况下使用了多个“代码”,所以我的视图可以返回2行或更多行。要求根据最高净值返回批准人 以下是我的看法: CREATE VIEW UDF_APPROVER AS WITH UDF_BUDGAPPROVER (_ID , USERID , Nett , ANALYSIS) AS ( ISNULL(HEADER_PRIMARY,0) '_ID', INITIATOR_ID as 'USERID',

我正在尝试创建一个视图,该视图将根据净值的最高总和返回APPROVER。我可以返回净值的总和,但在某些情况下使用了多个“代码”,所以我的视图可以返回2行或更多行。要求根据最高净值返回批准人

以下是我的看法:

CREATE VIEW UDF_APPROVER
AS
WITH UDF_BUDGAPPROVER (_ID  , USERID , Nett , ANALYSIS)
AS
(
ISNULL(HEADER_PRIMARY,0) '_ID',
INITIATOR_ID as 'USERID',
SUM(NETT) AS 'Nett',
ANALYSIS 
FROM ORDER_HEADER
JOIN ORDER_DETAIL ON HEADER_PRIMARY = HEADER_LINK
GROUP BY
HEADER_PRIMARY,
INITIATOR_ID
ANALYSIS
)

SELECT
Nett ,
__PR_ID ,
__USER_ID ,
NCATEGORYCODE5 AS 'APPROVER' ,
CODE ,
FROM GENERAL_ACCOUNTS
JOIN UDF_BUDGAPPROVER ON CODE = ANALYSIS
WHERE _ID = 15

GUI将传入_ID,因此它将始终只返回我想要的详细信息行

我需要返回一行以将审批人返回为TR01,因为1-2102-60具有最高的净值

我认为我需要继续使用函数

我希望这是有意义的,任何帮助都将被感激

你可以这样试试

CREATE VIEW UDF_APPROVER
AS
WITH UDF_BUDGAPPROVER (
    _ID
    ,USERID
    ,Nett
    ,ANALYSIS
    )
AS (
    ISNULL(HEADER_PRIMARY, 0) '_ID'
    ,INITIATOR_ID AS 'USERID'
    ,SUM(NETT) AS 'Nett'
    ,ANALYSIS FROM ORDER_HEADER
    JOIN ORDER_DETAIL ON HEADER_PRIMARY = HEADER_LINK
    GROUP BY HEADER_PRIMARY
        ,INITIATOR_ID ANALYSIS
    )
SELECT MAX(Nett) AS Nett
    ,__PR_ID
    ,__USER_ID
    ,NCATEGORYCODE5 AS 'APPROVER'
    ,CODE
FROM GENERAL_ACCOUNTS
JOIN UDF_BUDGAPPROVER ON CODE = ANALYSIS
WHERE _ID = 15
GROUP BY __PR_ID
    ,__USER_ID
    ,NCATEGORYCODE5
    ,CODE
你可以这样试试

CREATE VIEW UDF_APPROVER
AS
WITH UDF_BUDGAPPROVER (
    _ID
    ,USERID
    ,Nett
    ,ANALYSIS
    )
AS (
    ISNULL(HEADER_PRIMARY, 0) '_ID'
    ,INITIATOR_ID AS 'USERID'
    ,SUM(NETT) AS 'Nett'
    ,ANALYSIS FROM ORDER_HEADER
    JOIN ORDER_DETAIL ON HEADER_PRIMARY = HEADER_LINK
    GROUP BY HEADER_PRIMARY
        ,INITIATOR_ID ANALYSIS
    )
SELECT MAX(Nett) AS Nett
    ,__PR_ID
    ,__USER_ID
    ,NCATEGORYCODE5 AS 'APPROVER'
    ,CODE
FROM GENERAL_ACCOUNTS
JOIN UDF_BUDGAPPROVER ON CODE = ANALYSIS
WHERE _ID = 15
GROUP BY __PR_ID
    ,__USER_ID
    ,NCATEGORYCODE5
    ,CODE

请在这里检查如何改进问题…发布一些示例数据和您的预期输出。这可能很棘手,因为这是客户数据。从所附的屏幕截图中,我只想看到第1行的审批人。涉及3个表,订单标题(1行)、包含货币值和分析的明细行(1行或多行)。表3包含审批人,分析用于加入代码表。请检查此处如何改进问题…发布一些示例数据和预期输出。这可能很棘手,因为这是客户数据。从所附的屏幕截图中,我只想看到第1行的审批人。涉及3个表,订单标题(1行)、包含货币值和分析的明细行(1行或多行)。表3包含审批人,分析用于连接到代码表。我认为这不起作用,因为审批人不明确,因此我无法按其分组。我认为这不起作用,因为审批人不明确,因此我无法按其分组。