SQLserver遇到了奇怪的问题

image.png这条数据的IS_cancel字段是空值

image.png我的另一端SQL加入了这个字段作过滤,过滤掉等于1的,但是这条数据夜查不出来了,请问是啥情况

 SELECT

 q.车间,

 q.颜色,

 q.纸种,

 q.批次,

 q.产品代码,

  sum(q.重量)/1000 吨

  

FROM

 ( 

 SELECT distinct paper.PAPER_ROLL_CODE 批次,

 case m.COLOR when 'BaseSet_color/yellow' then '本色' when 'BaseSet_color/white' then '漂白'  else '其他' end 颜色,

 case m.PRODUCT_CODE  when null then '其他' else m.PRODUCT_CODE end 产品代码,

 paper.WEIGH 重量,

 case SUBSTRING(paper.PAPER_ROLL_CODE,1,1) when 'Y' then '原纸' when 'F' then '分切纸' when 'A' then '分盘纸' else '其他' end 纸种,

 CASE   

    WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 01 and 04 THEN

    '一车间' 

    WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 05 and 08 THEN

    '二车间' 

    WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 09 and 14 THEN

    '三车间' 

    WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 51 and 99 THEN

    '分切车间' 

    ELSE '未知' end

    车间

    

FROM

 WOM_PAPER_RECORDS paper LEFT JOIN BASESET_BATCH_INFOS  b on paper.PAPER_ROLL_CODE=b.BATCH_NUM

  LEFT JOIN  BASESET_MATERIALS m on paper.PRODUCT_ID=m.id

  LEFT JOIN  WOM_TASK_LISTS task on m.id = task.product

  where 

 

  DateDiff(mm,paper.CREATE_TIME,getdate())=2 and paper.WEIGH>0 and paper.IS_CANCEL <> 1

 ) q  

 where  q.纸种='原纸' and q.产品代码='UB-14.5' and q.批次='Y220302D05510'

 GROUP BY q.车间,q.颜色,q.纸种,q.批次,q.产品代码

 ORDER BY q.车间,q.颜色,q.纸种,q.批次,q.产品代码 asc

 

 SELECT top 10 * FROM WOM_PAPER_RECORDS WHERE PAPER_ROLL_CODE='Y220302D05510'

无为而无不为 发布于 2022-5-10 16:37 (编辑于 2022-5-10 16:45)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-5-10 16:39(编辑于 2022-5-10 17:25)

远程处理:空值(NULL)影响

全部SQL 贴出来 可能是LEFT JOIN 的原因

image.png

  • 无为而无不为 无为而无不为(提问者) SELECT q.车间, q.颜色, q.纸种, q.批次, q.产品代码, sum(q.重量)/1000 吨 FROM ( SELECT distinct paper.PAPER_ROLL_CODE 批次, case m.COLOR when \'BaseSet_color/yellow\' then \'本色\' when \'BaseSet_color/white\' then \'漂白\' else \'其他\' end 颜色, --m.PRODUCT_CODE 产品代码, case m.PRODUCT_CODE when null then \'其他\' else m.PRODUCT_CODE end 产品代码, paper.WEIGH 重量, case SUBSTRING(paper.PAPER_ROLL_CODE,1,1) when \'Y\' then \'原纸\' when \'F\' then \'分切纸\' when \'A\' then \'分盘纸\' else \'其他\' end 纸种, CASE WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 01 and 04 THEN \'一车间\' WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 05 and 08 THEN \'二车间\' WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 09 and 14 THEN \'三车间\' WHEN cast(SUBSTRING(paper.PAPER_ROLL_CODE, 9, 2) as int) Between 51 and 99 THEN \'分切车间\' ELSE \'未知\' end 车间 FROM WOM_PAPER_RECORDS paper LEFT JOIN BASESET_BATCH_INFOS b on paper.PAPER_ROLL_CODE=b.BATCH_NUM LEFT JOIN BASESET_MATERIALS m on paper.PRODUCT_ID=m.id LEFT JOIN WOM_TASK_LISTS task on m.id = task.product where --CONVERT (varchar(10),paper.CREATE_TIME,121) =CONVERT (varchar(10),GETDATE()-1,121) and paper.WEIGH>0 and paper.IS_CANCEL=0 DateDiff(mm,paper.CREATE_TIME,getdate())=2 and paper.WEIGH>0 and paper.IS_CANCEL <> 1 ) q --数据核对 where q.纸种=\'原纸\' and q.产品代码=\'UB-14.5\' and q.批次=\'Y220302D05510\' GROUP BY q.车间,q.颜色,q.纸种,q.批次,q.产品代码 ORDER BY q.车间,q.颜色,q.纸种,q.批次,q.产品代码 asc
    2022-05-10 16:39 
  • Z4u3z1 Z4u3z1 回复 无为而无不为(提问者) 可以把SQL 贴到问题描述里么? 里面有注释不知道怎么断句了...
    2022-05-10 16:41 
  • 无为而无不为 无为而无不为(提问者) 我把这个过滤条件去掉就能查出来
    2022-05-10 16:41 
  • 无为而无不为 无为而无不为(提问者) 回复 Z4u3z1 加入了
    2022-05-10 16:43 
  • Z4u3z1 Z4u3z1 回复 无为而无不为(提问者) 你看我的图没法断句.........
    2022-05-10 16:44 
  • 1关注人数
  • 301浏览人数
  • 最后回答于:2022-5-10 17:25
    请选择关闭问题的原因
    确定 取消
    返回顶部