子查询 结合 内连接 来消除重复纪录

SELECT A.TEI_ZOKU, A.HAISO_CHIKU_CD,A.MOS_CART_CD, A.SORYO, A.KINSHI_FLG, A.INS_YMD, A.INS_HMS, A.LST_UPDTS,A.UPDT_KAI, A.LST_UPDT_YMD, A.LST_UPDT_HMS, B.MISE_NAME, C.BUMON_NAME,SERVICE_FLG FROM (select chiku_cd,min( service_flg) as service_flg from gcm_haiso where gcm_haiso.mise_cd=1111and bumon_cd=111  group by chiku_cd ) inner join GCM_SORYO A on chiku_cd =HAISO_CHIKU_CD,GCM_MISE B,GCM_BUMON C WHERE A.BUMON_CD =C.BUMON_CD  AND A.MISE_CD=C.MISE_CD AND A.MISE_CD=B.MISE_CD AND A.MISE_CD=1111 AND A.BUMON_CD = 111 AND A.MOS_CART_CD=0   ORDER BY CAST(A.HAISO_CHIKU_CD  AS int) ASC

其中 子查询 select chiku_cd,min( service_flg) as service_flg from gcm_haiso where gcm_haiso.mise_cd=1111and bumon_cd=111  group by chiku_cd  通过分组,取最小值获得不重复的纪录,然后 用 inner join 来连接 另一个表,如果还想查询 子查询 的min(聚集函数)字段,则需要给他取个别名 min( service_flg) as service_flg ,才能在子查询外使用。

24号补充:
发现内联接其实可以不写,结果一样的,就像From A,B一样,后来用到了右连接,以及联合查询。
SELECT NVL(CAST(MAX(CHIKU_CD) AS INT),0) AS CHIKU_CD FROM GCM_HAISO WHERE  MISE_CD = 1111 AND BUMON_CD = 111 UNION (SELECT NVL(CAST(MAX(HAISO_CHIKU_CD) AS INT),0) FROM GCM_SORYO WHERE  MISE_CD =1111 AND BUMON_CD =111 AND MOS_CART_CD=0  ) ORDER BY CHIKU_CD DESC

右连接
SELECT A.MISE_CD, A.BUMON_CD,A.TEI_ZOKU, A.HAISO_CHIKU_CD,A.MOS_CART_CD, A.SORYO, A.KINSHI_FLG, A.INS_YMD, A.INS_HMS, A.LST_UPDTS,A.UPDT_KAI, A.LST_UPDT_YMD, A.LST_UPDT_HMS, SERVICE_FLG FROM (SELECT CHIKU_CD,MIN(SERVICE_FLG) AS SERVICE_FLG FROM GCM_HAISO WHERE GCM_HAISO.MISE_CD=1111 AND GCM_HAISO.BUMON_CD=111 GROUP BY CHIKU_CD) RIGHT OUTER JOIN GCM_SORYO A  ON CHIKU_CD =HAISO_CHIKU_CD WHERE A.MISE_CD=1111 AND A.BUMON_CD =111 AND A.MOS_CART_CD=0   ORDER BY CAST(A.HAISO_CHIKU_CD  AS int) ASC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值