2018-08-03左连接

select A.operator,a.qty,case when s.username is null then A.operator else s.username end username,

            CASE WHEN b.qty IS NULL THEN 0 ELSE B.QTY END Qc_Qty,

            case when b.qty is null then '0.00%' else

              TO_CHAR(round(B.qty/A.qty* 100,2), 'FM990.00')||'%' end rate,

              C.QTY QTYC

              ,CASE WHEN B.QTY IS NULL THEN '0.00%' ELSE TO_CHAR(ROUND(B.QTY/C.QTY* 100,2),'FM990.00')||'%' END rate2

            from

            (select br.operator,F.LOT_ID,count(*) qty from bl_record br

            INNER JOIN (select bl_id,LOT_ID from oqc_bl_check where lot_id='20180801143533.353955') F ON F.BL_ID = BR.BL_ID

            and ws_id='260'

            and br.trans_type = 'A'

            group by br.operator,F.LOT_ID

            )A

            left join

            (select

            br.operator,F.LOT_ID,count(*) qty from bl_record br

            INNER JOIN (select LOT_ID,bl_id from oqc_bl_check where lot_id='20180801143533.353955') F ON F.BL_ID = BR.BL_ID

            and ws_id='260'

            and br.trans_type = 'B'

            group by br.operator,F.LOT_ID

            )B ON A.operator = B.operator AND A.LOT_ID = B.LOT_ID

            LEFT JOIN

            (select F.LOT_ID,count(*) qty from bl_record br

            INNER JOIN (select bl_id,lot_id from oqc_bl_check where lot_id='20180801143533.353955') F ON F.bl_id=BR.BL_ID

            and ws_id='260'

            and br.trans_type = 'A'

            group by F.LOT_ID

            )C ON A.LOT_ID = C.LOT_ID

            left join sysuser S on a.operator=s.usercode


今天主要学习了oracle的左连接.知道今天遇到了才理解了左连接的意思.简单的来说,无论是何种连接就是把需要连接的两张表连接合并成一张表,而工作意义中,则是为了把来自两个表的结果合并为来自一个表的结果.(因为C#的listView的一个item只能绑定一个数据源)


因为客户的需求,想把两笔没有相同操作人的数据整理至同一个listview中,并且两边操作人的数量也未必相同.一开始的想法是,是不是有某种方法能把没有关联的两张表并联在一起,结果是否定的.于是做成了两个listview.过了一会想起前一段时间使用的创建序列号的语句row_number() over (order by a.operator)nbr
于是想到,可以把左右两张表加上序列号.根据序列号把两张表串联到一起


其中,用户想要的结果需要用到抽检总数与NG总数,惯性思维下,会把总数的结果也放在表中做连接.但是使用count又需要group by做条件,所以有时过程会比较繁琐.于是想到可以直接把select count(*)from table作为一个总数放到select中做结果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,486评论 0 10
  • 概述 iOS 适配,主要记住如下几个数据 20、24、34、44、49、83 20: 普通手机 status he...
    NapoleonY阅读 325评论 0 1
  • l昨晚儿子到同学家应该是一夜没睡觉,早上七点回来就上床睡下了,中午饭也不愿意起来吃,直到下午我下班回家看到儿子还躺...
    小瓶盖Q日记阅读 223评论 0 0
  • 姓名:张景方 公司:上海日朗门窗有限公司 反省一组 【日精进打卡第70天】 【知~学习】 《六项精进》诵读0遍共4...
    威廉张豆豆爹阅读 115评论 0 0
  • 这张照片更挺有意思的!天在下雨,他在生气!却没有忘了给她遮雨!我也被这幅图感动了, 夫妻也好,知己也罢,朋友也亦,...
    绍兴虞扬明阅读 186评论 0 0