2017-10-13 88 views
0

我讀了許多與我的問題相關的類似標題,但我無法申請我的案例。 這是我的查詢:消除SQL Server 2008查詢的重複記錄

select 
    d._LINE_NO, a._PROCESS_INST_NO, a._ISSUER, a._ISSUE_DATE, 
    d._PROCESS_CONTENTS, d._OPT_DIVISION, 
    b._GOODS_CD, b._GOODS_NAME,b._QTY, 
    a._Order_No, c._GOODS_CD, c._GOODS_NAME,a._NOTE, 
    d._LINE_NO + 1 as Proc_Step_No, 
    count(*) over() as Total_Rows 
from 
    [ENVNDIVDB].[dbo].[TBL_PROC_PH] a 
inner join 
    [ENVNDIVDB].[dbo].[TBL_PROC_PM] b on b._PROCESS_INST_NO = a._PROCESS_INST_NO 
inner join 
    [ENVNDIVDB].[dbo].[TBL_PROC_PMS] c on c._PROCESS_INST_NO = a._PROCESS_INST_NO 
inner join 
    [ENVNDIVDB].[dbo].[TBL_PROC_PN] d on d._PROCESS_INST_NO = a._PROCESS_INST_NO 
where 
    a._PROCESS_INST_NO = '610416' 

這裏是結果:

enter image description here

它重複04次。 (見_PROCESS_CONTENT) 這裏是過程研究所沒有的原始數據:610416

enter image description here

我的問題是如何消除重複記錄

非常感謝提前。

回答

0

,我發現自己的解決方案:

;WITH cte AS 
    (
     select 
      d._LINE_NO, a._PROCESS_INST_NO, a._ISSUER, a._ISSUE_DATE, d._PROCESS_CONTENTS, 
      d._OPT_DIVISION, 
    RANK() OVER(PARTITION BY b._GOODS_CD ORDER BY b._LINE_NO) AS Rnk, 
      b._GOODS_CD , b._GOODS_NAME , 
       b._QTY, 
      a._Order_No, 
      c._GOODS_CD as RM_CD, c._GOODS_NAME as RM_NAME, 
       a._NOTE,d._LINE_NO + 1 as Proc_Step_No, 
     COUNT(*) OVER() as Total_Rows 
     from 
      [ENVNDIVDB].[dbo].[TBL_PROC_PH] a 
     inner join [ENVNDIVDB].[dbo].[TBL_PROC_PM] b on b._PROCESS_INST_NO = a._PROCESS_INST_NO 
     inner join 
      [ENVNDIVDB].[dbo].[TBL_PROC_PMS] c on c._PROCESS_INST_NO = a._PROCESS_INST_NO 
     inner join 
      [ENVNDIVDB].[dbo].[TBL_PROC_PN] d on d._PROCESS_INST_NO = a._PROCESS_INST_NO 
     where 
      a._PROCESS_INST_NO = '609390') 
SELECT distinct 
     _LINE_NO, _PROCESS_INST_NO, _ISSUER, _ISSUE_DATE, _PROCESS_CONTENTS, 
      _OPT_DIVISION, 
      _GOODS_CD, _GOODS_NAME, _QTY, 
      _Order_No, RM_CD, RM_NAME,_NOTE, 
      Proc_Step_No 
FROM 
    cte 
WHERE rnk = 1 
ORDER by 
    _LINE_NO 
+0

不好意思,剛看到這一點,很高興你找到了解決辦法 – pcdev