更新表sql查询

时间:2015-09-01 19:22:38

标签: sql-server

Soo更新查询不是我会说我很擅长的。我的代码显示了我的原始代码,ICD9代码和ICD10代码。

基本上我想为每个9代码取出ICD10代码的前1位并更新匹配的原始代码。原始版本将与ICD9代码匹配。

select 
    tf.default_value Orig, 
    MAX(i9.conceptcode) ICD9, 
    MAX(i10.conceptcode) ICD10 
from 
    extract_icd10_9_xref xr
join 
    extract_icd9_concept i9 on i9.concept_id = xr.targetconcept_id
join 
    extract_icd10_concept i10 on i10.concept_id = xr.sourceconcept_id
join 
    template_fields tf on i9.conceptcode = tf.default_value
group by 
    tf.default_value

退货(以及其他)

    **ORIG     ICD9     ICD10**
      301.4    301.4    F60.5
      996.2    996.2    T85.199A
      E920.4   E920.4   W27.8xxD
      E918     E918     W23.1xxD
      285.21   285.21   D63.1
      765.10   765.10   P07.10
      593.70   593.70   N13.71

同样,我对更新查询很糟糕。所以我希望有人可以帮我写上面的查询,所以当运行它会覆盖template_fields中的ORIG与extract_icd10_concept中的ICD10

非常感谢任何帮助:/

我可怕的第一次尝试

update template_fields tf
set default_value = MAX(i10.conceptcode)
where i9.conceptcode = tf.default_value
join extract_icd9_concept i9 on i9.conceptcode = tf.default_value
join extract_icd10_concept i10 on i10.concept_id = xr.sourceconcept_id
join template_fields tf on i9.conceptcode = tf.default_value

3 个答案:

答案 0 :(得分:3)

由于我不完全理解您的表结构,因此可能需要进行调整,但基本思路是创建一个select查询以获取ICD10值。然后将它连接到要更新的表(这使它成为派生表)。在下面的查询中,您将注意到我在注释中嵌入了SELECT。运行此SELECT而不是更新,直到您确定要正确更新为止。

UPDATE tf
SET default_value = a.ICD10
--select tf.default_value, a.ICD10,  *
FROM template_fields tf 
JOIN
  (SELECT tf.default_value Orig, MAX(i10.conceptcode) ICD10 
      FROM extract_icd10_9_xref xr
        JOIN extract_icd9_concept i9 ON i9.concept_id = xr.targetconcept_id
        JOIN extract_icd10_concept i10 ON i10.concept_id = xr.sourceconcept_id
        JOIN template_fields tf ON i9.conceptcode = tf.default_value
      GROUP BY tf.default_value) a 
        ON a.defaultvalue = tf.defaultvalue

答案 1 :(得分:2)

这应该使用与ICD9匹配的MAX ICD10更新default_value字段。

bigonumber <- 429382748394831049284934
hash_big <- digest::digest(bigonumber)
hash_big
# "e47e7d8a9e1b7d74af6a492bf4f27193"

答案 2 :(得分:0)

我认为这就是你所需要的 -

-