表连接,开窗函数

字段来自两张表,对incidentnum去重,对fowarddatetime时间降序取最新两条,下面是我写的,一直有问题求大佬帮忙

SELECT

subquery.organname,

subquery.commname,

subquery.incidentdealstatename,

subquery.incidentnum,

subquery.coordinatenum,

subquery.incidentcontent,

subquery.classname,

subquery.deallimit,

subquery.roomid,

subquery.roomname,

subquery.incidentman,

     subquery.admiman,

subquery.admidate,

subquery.reservedate,

subquery.dispdate,

subquery.dispman,

subquery.receivingdate,

subquery.arrivedata,

     subquery.finishdate,

subquery.finishuser,

subquery.finishusermobiletel,

subquery.ratedworkhournumber,

subquery.kpiratio,

subquery.dealresult,

subquery.dueamount,

subquery.deviceid,

subquery.closetime,

subquery.closeuser,

subquery.closesituation,

subquery.isclose,

subquery.nonormalclosereasons,

subquery.replycontent,

subquery.replyresult,

subquery.servicequality,

subquery.replydate,

subquery.replyman,

subquery.deletedate,

subquery.deleteman,

subquery.deletereasons,

     subquery.forwardreasons,

     subquery.forwarddatetime,

subquery.dealman 

FROM

(

SELECT

a.organname,

a.commname,

a.incidentdealstatename,

a.incidentnum,

a.coordinatenum,

a.incidentcontent,

a.classname,

a.deallimit,

a.roomid,

a.roomname,

a.incidentman,

     a.admiman,

a.admidate,

a.reservedate,

a.dispdate,

a.dispman,

a.receivingdate,

a.arrivedata,

a.finishdate,

a.finishuser,

a.finishusermobiletel,

a.ratedworkhournumber,

a.kpiratio,

a.dealresult,

a.dueamount,

a.deviceid,

a.closetime,

a.closeuser,

a.closesituation,

a.isclose,

a.nonormalclosereasons,

a.replycontent,

a.replyresult,

a.servicequality,

a.replydate,

a.replyman,

a.deletedate,

a.deleteman,

a.deletereasons,

 

     b.forwardreasons,

     b.forwarddatetime,

a.dealman, 

row_number () OVER ( partition BY a.incidentnum order by b.forwarddatetime desc) 

  AS rn 

FROM

PMS_Base.dbo.view_HSPR_IncidentNewJH_Search_Filter as a full join PMS_Base.dbo.Tb_HSPR_IncidentForward as b on a.incidentid=b.incidentid

)AS subquery

WHERE a.organname in ('${区域}')

and a.commname in ('${项目}')

image.png

SQL 头大的大头 发布于 2023-7-14 17:24 (编辑于 2023-7-17 13:52)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
蒲公英FZLJLv5初级互助
发布于2023-7-16 10:33

外层查询的表别名是 subquery ,需要把a和b改成 subquery 

  • 头大的大头 头大的大头(提问者) 我照你说的改了,说数据集配置错误,哪儿还有问题啊大佬
    2023-07-17 10:55 
  • 蒲公英FZLJ 蒲公英FZLJ 回复 头大的大头(提问者) 条件的表别名也应该是 subquery WHERE subquery.organname in (\'${区域}\') and subquery.commname in (\'${项目}\')
    2023-07-17 20:11 
  • 头大的大头 头大的大头(提问者) 嗯,改了在navicat里能查到数据,但是在设计器里查就不行,我不知道是不是数据集有问题
    2023-07-18 11:29 
最佳回答
1
HHHHH123Lv7中级互助
发布于2023-7-17 11:12(编辑于 2023-7-17 13:58)

image.png

SELECT

  subquery.organname,

  subquery.commname,

  subquery.incidentdealstatename,

  subquery.incidentnum,

  subquery.coordinatenum,

  subquery.incidentcontent,

  subquery.classname,

  subquery.deallimit,

  subquery.roomid,

  subquery.roomname,

  subquery.incidentman,

  subquery.admiman,

  subquery.admidate,

  subquery.reservedate,

  subquery.dispdate,

  subquery.dispman,

  subquery.receivingdate,

  subquery.arrivedata,

  subquery.finishdate,

  subquery.finishuser,

  subquery.finishusermobiletel,

  subquery.ratedworkhournumber,

  subquery.kpiratio,

  subquery.dealresult,

  subquery.dueamount,

  subquery.deviceid,

  subquery.closetime,

  subquery.closeuser,

  subquery.closesituation,

  subquery.isclose,

  subquery.nonormalclosereasons,

  subquery.replycontent,

  subquery.replyresult,

  subquery.servicequality,

  subquery.replydate,

  subquery.replyman,

  subquery.deletedate,

  subquery.deleteman,

  subquery.deletereasons,

  subquery.forwardreasons,

  subquery.forwarddatetime,

  subquery.dealman

FROM (

  SELECT

    a.organname,

    a.commname,

    a.incidentdealstatename,

    a.incidentnum,

    a.coordinatenum,

    a.incidentcontent,

    a.classname,

    a.deallimit,

    a.roomid,

    a.roomname,

    a.incidentman,

    a.admiman,

    a.admidate,

    a.reservedate,

    a.dispdate,

    a.dispman,

    a.receivingdate,

    a.arrivedata,

    a.finishdate,

    a.finishuser,

    a.finishusermobiletel,

    a.ratedworkhournumber,

    a.kpiratio,

    a.dealresult,

    a.dueamount,

    a.deviceid,

    a.closetime,

    a.closeuser,

    a.closesituation,

    a.isclose,

    a.nonormalclosereasons,

    a.replycontent,

    a.replyresult,

    a.servicequality,

    a.replydate,

    a.replyman,

    a.deletedate,

    a.deleteman,

    a.deletereasons,

    b.forwardreasons,

    b.forwarddatetime,

    a.dealman,

    ROW_NUMBER() OVER (PARTITION BY a.incidentnum ORDER BY b.forwarddatetime DESC) AS rn

  FROM (

    SELECT

      i.organname,

      i.commname,

      i.incidentdealstatename,

      i.incidentnum,

      i.coordinatenum,

      i.incidentcontent,

      i.classname,

      i.deallimit,

      i.roomid,

      i.roomname,

      i.incidentman,

      i.admiman,

      i.admidate,

      i.reservedate,

      i.dispdate,

      i.dispman,

      i.receivingdate,

      i.arrivedata,

      i.finishdate,

      i.finishuser,

      i.finishusermobiletel,

      i.ratedworkhournumber,

      i.kpiratio,

      i.dealresult,

      i.dueamount,

      i.deviceid,

      i.closetime,

      i.closeuser,

      i.closesituation,

      i.isclose,

      i.nonormalclosereasons,

      i.replycontent,

      i.replyresult,

      i.servicequality,

      i.replydate,

      i.replyman,

      i.deletedate,

      i.deleteman,

      i.deletereasons,

      i.incidentid -- 添加incidentid用于连接子查询

    FROM PMS_Base.dbo.view_HSPR_IncidentNewJH_Search_Filter AS i

    WHERE a.organname in ('${区域}')

and a.commname in ('${项目}')

  ) AS a

  LEFT JOIN PMS_Base.dbo.Tb_HSPR_IncidentForward AS b ON a.incidentid = b.incidentid AND a.rn_inner = 1

) AS subquery

WHERE subquery.rn <= 2

  • 3关注人数
  • 528浏览人数
  • 最后回答于:2023-7-17 13:58
    请选择关闭问题的原因
    确定 取消
    返回顶部