在SQL Server中,在group by之后填充第一行

时间:2016-07-30 20:08:18

标签: sql-server group-by

这是我的示例数据

  COMM_AGENT_ID     ADP  CHANNEL    AMOUNT_TIER  SUM_AMOUNT_TIER    SALES_MGR
  ---------------------------------------------------------------------------
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL

我希望我的输出格式为:

   COMM_AGENT_ID    ADP  CHANNEL    AMOUNT_TIER  SUM_AMOUNT_TIER    SALES_MGR
   --------------------------------------------------------------------------
       AC028        3583  HP                 3         9             ABC
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC029        3583  JK                 3         9             PQR
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL

此处abcpqr是仅在第一行填写的名称,9是COMM_AGENT_ID和ADP上的一些分组。

我在row_number上使用CTE完成了。我已在partition by ADP,comm_agent_ID生成了行号并更新了值where SRNO=1

它正在工作,但输出格式不正确。

我目前的输出:

     COMM_AGENT_ID  ADP  CHANNEL    AMOUNT_TIER  SUM_AMOUNT_TIER    SALES_MGR
     ------------------------------------------------------------------------
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         NULL          NULL
       AC028        3583  HP                 3         9             ABC
       AC028        3583  HP                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         NULL          NULL
       AC029        3583  JK                 3         9             PQR
       AC029        3583  JK                 3         NULL          NULL

它不在第一行。

2 个答案:

答案 0 :(得分:1)

enum.Bird

答案 1 :(得分:0)

你的结果很好。添加ORDER BY SUM_AMOUNT_TIER DESC, COMM_AGENT_ID,它将“在第一行”