【问题标题】:Selecting distinct records not considering one field选择不同的记录而不考虑一个字段
【发布时间】:2013-05-20 08:40:13
【问题描述】:

我有一个由七个字段组成的复合主键的表:

PK COD_LTN
PK COD_CANA
PK COD_FAM_PRO
PK COD_CTG_PRO
PK COD_PRO
PK COD_CFG_PRM_PRO
PK COD_FAM_PRM_PRO

例如,我有这两条记录:

COD_LTN  COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_CFG_PRM_PRO COD_FAM_PRM_PRO
00011    SPO      NF          C01         53      A               PZTR
00011    SPO      NF          C01         53      B               PZTR

我想选择不考虑 COD_CFG_PRM_PRO 字段的所有不同记录:

SELECT DISTINCT
        COD_LTN,
        COD_CANA,
        COD_FAM_PRO,
        COD_CTG_PRO,
        COD_PRO,
        -- COD_CFG_PRM_PRO, don't consider this
        COD_FAM_PRM_PRO
FROM
        PRM_STATICO_PRO  
WHERE
        COD_PRO=53;

当然可以:

COD_LTN  COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_FAM_PRM_PRO
00011    SPO      NF          C01         53      PZTR

但我也想选择使记录不同的字段COD_CFG_PRM_PRO,即我只想要一条记录:

COD_LTN  COD_CANA COD_FAM_PRO COD_CTG_PRO COD_PRO COD_CFG_PRM_PRO COD_FAM_PRM_PRO
00011    SPO      NF          C01         53      A               PZTR

我找不到方法。

【问题讨论】:

    标签: sql group-by distinct


    【解决方案1】:

    你可以使用 group by 和 min 函数来解决这个问题 -

    SELECT Cod_Ltn,
           Cod_Cana,
           Cod_Fam_Pro,
           Cod_Ctg_Pro,
           Cod_Pro,
           MIN(Cod_Cfg_Prm_Pro),
           Cod_Fam_Prm_Pro
      FROM Prm_Statico_Pro
     WHERE Cod_Pro = 53
     GROUP BY Cod_Ltn,
              Cod_Cana,
              Cod_Fam_Pro,
              Cod_Ctg_Pro,
              Cod_Pro,
              Cod_Fam_Prm_Pro;
    

    这将给出你所期望的结果..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2022-11-22
      • 2013-08-23
      相关资源
      最近更新 更多