pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

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)
主站蜘蛛池模板: 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 广州展览设计公司_展台设计搭建_展位设计装修公司-众派展览装饰 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 余姚生活网_余姚论坛_余姚市综合门户网站 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 999范文网_优质范文下载写作帮手 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 汽车水泵_汽车水泵厂家-瑞安市骏迪汽车配件有限公司 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 |