1

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

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

我找不到怎么做。

4

1 回答 1

2

您可以使用 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;

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

于 2013-05-20T09:01:36.347 回答