带有内连接的DISTINCT SQL查询,省略了注意事项中的列,

时间:2015-01-14 12:35:40

标签: sql join db2

我有一个DB2查询,如下所示:

SELECT DISTINCT RETAILMASTERFILE.DOIDCD AS "RETAILMASTERFILE_DOIDCD",
         RETAILMASTERFILE.COCOMO AS "RETAILMASTERFILE_COCOMO",
         #XENOS.CUSTREF AS "XENOS_CUSTREF",
         #XENOS.ADDUDT AS "XENOS_ADDUDT",
         #XENOS.ADUPDD AS "XENOS_ADUPDD",
         #XENOS.ADUPDT AS "XENOS_ADUPDT",
         #XENOS.ADSTAT AS "XENOS_ADSTAT"
FROM     RETAILMASTERFILE INNER JOIN
         #XENOS ON RETAILMASTERFILE.DOCOMP = #XENOS.ADCOMP 
                AND RETAILMASTERFILE.COCOMO = #XENOS.ADDELN 
WHERE     (RETAILMASTERFILE.DOIDCD = 'CUST008') 
      AND (RETAILMASTERFILE.COCOMO = '345126032') 
      AND (RETAILMASTERFILE.DOCOMP = 'LONDON')

问题是#XENOS.ADUPDT可能不是唯一的,它会给我一个不需要的重复记录。 有什么方法可以将其排除在考虑范围之外吗?到目前为止,我在有限的知识和对群体的粗略理解中所尝试的一切迄今为止都打破了我的疑问。

1 个答案:

答案 0 :(得分:1)

改为使用GROUP BY

SELECT   RETAILMASTERFILE.DOIDCD AS "RETAILMASTERFILE_DOIDCD",
         RETAILMASTERFILE.COCOMO AS "RETAILMASTERFILE_COCOMO",
         #XENOS.CUSTREF AS "XENOS_CUSTREF",
         #XENOS.ADDUDT AS "XENOS_ADDUDT",
         #XENOS.ADUPDD AS "XENOS_ADUPDD",
         MAX(#XENOS.ADUPDT) AS "XENOS_ADUPDT",
         #XENOS.ADSTAT AS "XENOS_ADSTAT"
FROM     RETAILMASTERFILE INNER JOIN
         #XENOS
         ON RETAILMASTERFILE.DOCOMP = #XENOS.ADCOMP AND
            RETAILMASTERFILE.COCOMO = #XENOS.ADDELN 
WHERE  (RETAILMASTERFILE.DOIDCD = 'CUST008') AND (RETAILMASTERFILE.COCOMO = '345126032') AND 
       (RETAILMASTERFILE.DOCOMP = 'LONDON')
GROUP BY RETAILMASTERFILE.DOIDCD,
         RETAILMASTERFILE.COCOMO,
         #XENOS.CUSTREF,
         #XENOS.ADDUDT,
         #XENOS.ADUPDD,
         #XENOS.ADSTAT;