SQL问题

 SELECT 

TO_NUMBER(SUBSTR(MONTH_WID,5,2)) AS MONTH, 

CASE WHEN OM_CLASS_NAME='浆类' THEN SUM(CVT_ONHAND/10000) WHEN OM_CLASS_NAME='产品类' THEN SUM(CVT_ONHAND/80000) ELSE SUM(CVT_ONHAND/1000) END AS CVT_ONHAND--库存

FROM DW_F_UNION_SCM_INV

WHERE ${IF(ty='枣类',"OM_CLASS_NAME='枣类'","OM_CLASS_NAME = '"+ty1+"'")}

AND SUBSTR(MONTH_WID,1,4)=SUBSTR('${P_S_DATE}',1,4)

AND TO_NUMBER(SUBSTR(MONTH_WID,5,2))<=SUBSTR('${P_S_DATE}',6,2)

GROUP BY MONTH_WID,OM_CLASS_NAME

大佬们就是我这个case when 中这个WHEN OM_CLASS_NAME='产品类'这里,ty传参过来的是产品,不是产品类,但是这个地方又需要用产品类做判断,就是这个地方要怎么改呀

FineReport 嘘.. 发布于 2024-9-2 08:36
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
嘘..Lv2见习互助
发布于2024-9-2 09:12

 SELECT 

TO_NUMBER(SUBSTR(MONTH_WID,5,2)) AS MONTH, 

CASE WHEN OM_CLASS_NAME='浆类' THEN SUM(CVT_ONHAND/10000) WHEN ${ty}='产品' THEN SUM(CVT_ONHAND/80000) ELSE SUM(CVT_ONHAND/1000) END AS CVT_ONHAND--库存

FROM DW_F_UNION_SCM_INV

WHERE ${IF(ty='枣类',"OM_CLASS_NAME='枣类'",IF(ty='产品',"OM_CLASS_NAME='产品类'","OM_CLASS_NAME = '"+ty+"'"))}

AND SUBSTR(MONTH_WID,1,4)=SUBSTR('${P_S_DATE}',1,4)

AND TO_NUMBER(SUBSTR(MONTH_WID,5,2))<=SUBSTR('${P_S_DATE}',6,2)

GROUP BY MONTH_WID,OM_CLASS_NAME

最佳回答
0
snrtuemcLv8专家互助
发布于2024-9-2 08:43

你要有陈品和产品类的字典表

然后根据产品查询出产品类

WHERE ${IF(ty='枣类',"OM_CLASS_NAME='枣类'","OM_CLASS_NAME = '"+ty1+"'")}

改成

WHERE ${IF(ty='枣类',"OM_CLASS_NAME='枣类'","OM_CLASS_NAME = '"+sql("数据库连接名","select 产品类 from 表 where 产品='"+ty1+"'",1,1)+"'")}

  • 嘘.. 嘘..(提问者) 没有这个单独的表,并且ty不只有这两个还有其他的
    2024-09-02 08:47 
  • snrtuemc snrtuemc 回复 嘘..(提问者) 没对应关系,那就没办反了,有的话参考我的方案,可以会根据产品查询产品类来实现
    2024-09-02 08:48 
  • 1关注人数
  • 155浏览人数
  • 最后回答于:2024-9-2 09:12
    请选择关闭问题的原因
    确定 取消
    返回顶部