久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

SQL 返回一組鍵列中非鍵列的唯一組合

SQL to return unique combinations of non key columns within a set of key columns(SQL 返回一組鍵列中非鍵列的唯一組合)
本文介紹了SQL 返回一組鍵列中非鍵列的唯一組合的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在 SQL Server 中,我有一個目標表 STAGNG_PA_BK_FEED_REVNU_SUM,它有以下 7 列構成其唯一索引.我想使用主要來自 STAGNG_PA_BK_FEED_REVNU_DTL 表的數據填充此表.目標表中的數據包含一個金額字段 REVNU_AMT,該字段通過對所有其他選定/非聚合列進行分組來聚合.

In SQL Server, I have a target table STAGNG_PA_BK_FEED_REVNU_SUM, that has the following 7 columns that make up its unique index. I want to populate this table using data primarily from the STAGNG_PA_BK_FEED_REVNU_DTL table. The data in the target table includes an amount field, REVNU_AMT, that is aggregated by grouping on all of the other selected/non aggregated columns.

因為我們正在選擇添加屬性"不包含在目標表的唯一鍵中的列,如果我們為鍵分組內的屬性列獲得多個不同的值組合,則插入將失敗.發生這種情況時,我希望能夠識別共享相同主鍵但具有不同屬性值組合的所有源記錄.換句話說,我希望能夠生成完整源記錄的報告,以便業務用戶可以識別插入時導致唯一鍵沖突的違規記錄.

Because we are selecting addition "property" columns that are not included in the unique key of the target table, the insert will fail if we get more than one distinct combination of values for the property columns within a key grouping. When this happens, I want to be able to identify the all of the source records that share the same primary key but have different property value combinations. In other words, I want to be able to produce a report of the complete source records so that the business users can identify the offending records that cause the unique key violation when inserting.

INSERT INTO dbo.STAGNG_PA_BK_FEED_REVNU_SUM
    (
    --Keys of target table
    RBT_YR_DT
  , MLR_SRC_SYS_CD
  , LGL_ENTTY_CD
  , CLIENT_ID
  , CLIENT_ACCT_NUM
  , BEN_PLAN_ID
  , CLIENT_CNTRCT_ST_CD

    --Properties of target table
  , MLR_EXTRT_SYS_CD
  , PA_LGL_ENTTY_CD
  , COA_CO_CD
  , COMMRCL_BUS_IND
  , COA_SITUS_ST_CD
  , ASGND_SITUS_STE_IND
  , CLIENT_TY_CD
  , MLR_SEG_CD
  
  --Fact
  
  , REVNU_AMT
    
    )
SELECT
    --values for keys of target table
    D.RBT_YR_DT
  , D.MLR_SRC_SYS_CD
  , D.LGL_ENTTY_CD
  , D.CLIENT_ID
  , D.CLIENT_ACCT_NUM
  , D.BEN_PLAN_ID
  , J.SITUS_STE_CD   AS CLIENT_CNTRCT_ST_CD

    --values for properties of target table
  , D.MLR_EXTRT_SYS_CD
  , D.PA_LGL_ENTTY_CD
  , D.COA_CO_CD
  , D.COMMRCL_BUS_IND
  , D.COA_SITUS_ST_CD
  , 'N'              AS ASGND_SITUS_STE_IND   
  , D.CLIENT_TY_CD
  , D.MLR_SEG_CD

  --Fact
  ,SUM(D.REVNU_AMT) AS REVNU_AMT
  
FROM
    dbo.STAGNG_PA_BK_FEED_REVNU_DTL D
        INNER JOIN JE_NT_STE_MAP J
            ON D.COA_SITUS_ST_CD = J.CONTRACT_SITUS_STATE
GROUP BY
    --PK
    D.RBT_YR_DT
  , D.MLR_SRC_SYS_CD
  , D.LGL_ENTTY_CD
  , D.CLIENT_ID
  , D.CLIENT_ACCT_NUM
  , D.BEN_PLAN_ID
  , J.SITUS_STE_CD

    --Properties
    -- Must be unique distinct group of value within the key grouping else key violation on target will result
  , D.MLR_EXTRT_SYS_CD
  , D.PA_LGL_ENTTY_CD
  , D.COA_CO_CD
  , D.COMMRCL_BUS_IND
  , D.COA_SITUS_ST_CD
  , D.CLIENT_TY_CD
  , D.MLR_SEG_CD

更新

我之前考慮過使用 Jaime 的方法將所有屬性值連接成一個值,以便在 HAVING 子句中應用 DISTINCT 動詞.

Update

I previously considered using Jaime's approach of concatenating all of the property values into a single value so the DISTINCT verb could be applied in the HAVING clause.

根據他的回答,我將其修改為顯示報告源表中需要檢查和更正的所有記錄,以防止重復鍵違規,這是我的目標,而不僅僅是顯示重復的非鍵價值.

Taking his answer, I modified it to display a report all of the records in the source table that need to be examined and corrected in order to prevent the duplicate key violation, which was my goal, not just display the duplicated non key values.

WITH DUPS AS
(
    SELECT
        --values for keys of target table
        D.RBT_YR_DT
      , D.MLR_SRC_SYS_CD
      , D.LGL_ENTTY_CD
      , D.CLIENT_ID
      , D.CLIENT_ACCT_NUM
      , D.BEN_PLAN_ID
      , J.SITUS_STE_CD              AS CLIENT_CNTRCT_ST_CD
    FROM
        dbo.STAGNG_PA_BK_FEED_REVNU_DTL D
            INNER JOIN JE_NT_STE_MAP J
                ON D.COA_SITUS_ST_CD = J.CONTRACT_SITUS_STATE
    GROUP BY
        --PK
        D.RBT_YR_DT
      , D.MLR_SRC_SYS_CD
      , D.LGL_ENTTY_CD
      , D.CLIENT_ID
      , D.CLIENT_ACCT_NUM
      , D.BEN_PLAN_ID
      , J.SITUS_STE_CD
    HAVING
        COUNT(DISTINCT
        CONVERT(VARCHAR(MAX), D.MLR_EXTRT_SYS_CD) + '-' +
        CONVERT(VARCHAR(MAX), D.PA_LGL_ENTTY_CD) + '-' +
        CONVERT(VARCHAR(MAX), D.COA_CO_CD) + '-' +
        CONVERT(VARCHAR(MAX), D.COMMRCL_BUS_IND) + '-' +
        CONVERT(VARCHAR(MAX), D.COA_SITUS_ST_CD) + '-' +
        CONVERT(VARCHAR(MAX), D.CLIENT_TY_CD) + '-' +
        CONVERT(VARCHAR(MAX), D.MLR_SEG_CD)
        ) > 1
)
SELECT
        --Keys
        D.RBT_YR_DT
      , D.MLR_SRC_SYS_CD
      , D.LGL_ENTTY_CD
      , D.CLIENT_ID
      , D.CLIENT_ACCT_NUM
      , D.BEN_PLAN_ID
      , D.COA_SITUS_ST_CD

      --Properties that have dups with a key groups
      , D.MLR_EXTRT_SYS_CD
      , D.PA_LGL_ENTTY_CD
      , D.COA_CO_CD
      , D.COMMRCL_BUS_IND
      , D.COA_SITUS_ST_CD
--      , 'N'              AS ASGND_SITUS_STE_IND   
      , D.CLIENT_TY_CD
      , D.MLR_SEG_CD

FROM
    STAGNG_PA_BK_FEED_REVNU_DTL D
        INNER JOIN JE_NT_STE_MAP J
                ON D.COA_SITUS_ST_CD = J.CONTRACT_SITUS_STATE
    inner join DUPS ON 

        DUPS.RBT_YR_DT           = D.RBT_YR_DT
    AND DUPS.MLR_SRC_SYS_CD      = D.MLR_SRC_SYS_CD
    AND DUPS.LGL_ENTTY_CD        = D.LGL_ENTTY_CD
    AND DUPS.CLIENT_ID           = D.CLIENT_ID
    AND DUPS.CLIENT_ACCT_NUM     = D.CLIENT_ACCT_NUM
    AND DUPS.BEN_PLAN_ID         = D.BEN_PLAN_ID
    AND DUPS.CLIENT_CNTRCT_ST_CD = J.SITUS_STE_CD

order by 1,2,3,4,5,6,7,8,9,10,11,12,13,14

雖然這可能在實踐中起作用,但我發現它有點笨拙,最后我可能會顯示具有重復的非鍵的記錄,該非鍵出現了另一個鍵組但只出現過一次,所以最終報告可能不準確.

While this may work in practice I find it a little kludgy and in the end I may be displaying records that had a duplicate non-key that appeared another key grouping but only appeared there once, so the end report may not be accurate.

推薦答案

這樣的事情可以幫助您找到具有 1 個以上不同屬性組合的 PK

Something like this could help you to find those PK with more than 1 different properties combination

SELECT
   --values for keys of target table
   D.RBT_YR_DT
  ,D.MLR_SRC_SYS_CD
  ,D.LGL_ENTTY_CD
  ,D.CLIENT_ID
  ,D.CLIENT_ACCT_NUM
  ,D.BEN_PLAN_ID
  ,J.SITUS_STE_CD   AS CLIENT_CNTRCT_ST_CD
FROM dbo.STAGNG_PA_BK_FEED_REVNU_DTL D
  INNER JOIN JE_NT_STE_MAP J
    ON D.COA_SITUS_ST_CD = J.CONTRACT_SITUS_STATE
GROUP BY
   --PK
   D.RBT_YR_DT
  ,D.MLR_SRC_SYS_CD
  ,D.LGL_ENTTY_CD
  ,D.CLIENT_ID
  ,D.CLIENT_ACCT_NUM
  ,D.BEN_PLAN_ID
  ,J.SITUS_STE_CD
HAVING
    COUNT(DISTINCT
      CONVERT(VARCHAR(MAX),D.MLR_EXTRT_SYS_CD) + '-' +
      CONVERT(VARCHAR(MAX),D.PA_LGL_ENTTY_CD) + '-' +
      CONVERT(VARCHAR(MAX),D.COA_CO_CD) + '-' +
      CONVERT(VARCHAR(MAX),D.COMMRCL_BUS_IND) + '-' +
      CONVERT(VARCHAR(MAX),D.COA_SITUS_ST_CD) + '-' +
      CONVERT(VARCHAR(MAX),'N' AS ASGND_SITUS_STE_IND) + '-' +
      CONVERT(VARCHAR(MAX),D.CLIENT_TY_CD) + '-' +
      CONVERT(VARCHAR(MAX),D.MLR_SEG_CD)
    ) > 1

這篇關于SQL 返回一組鍵列中非鍵列的唯一組合的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Modify Existing decimal places info(修改現有小數位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 日本成人在线播放 | 国产精品国产三级国产播12软件 | 国产专区在线 | 国产成人精品久久二区二区91 | 日本亚洲欧美 | 毛色毛片免费看 | 国产精品久久久久久久免费观看 | 日韩午夜网站 | 亚洲国产日韩欧美 | 国产一二区免费视频 | 亚洲精品无| 日韩精品在线一区 | 国产91中文 | 国产欧美精品一区二区 | 久久久久久女 | 欧美亚洲国产日韩 | 欧美激情精品久久久久 | 精品视频在线免费观看 | 久久久久国产一区二区三区 | av在线一区二区三区 | 狠狠操你 | 欧美国产日韩一区二区三区 | 国产精品久久久亚洲 | 色婷婷综合久久久中文字幕 | 天天操天天干天天曰 | 久久久久久免费观看 | 久久久久国产精品免费免费搜索 | 亚洲精品二区 | 国产精品成人一区 | 国产一级一级 | 99精品电影| 亚洲三区在线播放 | 毛片毛片毛片毛片 | 国产三区视频在线观看 | 国产亚洲成av人片在线观看桃 | 国产区视频在线观看 | 亚洲区一区二 | 一级看片免费视频囗交动图 | 国产在线不卡视频 | 中文字幕精品一区久久久久 | 国产视频第一页 |