书写数据集,我把里面的控件去了之后,直接在数据库可以执行,但是在数据集中预览报错。

SELECT MODEL_NAME ,

CASE WHEN NUM2=0 THEN 0 ELSE NUM2/NUM1 END FILED1,

CASE WHEN NUM2=0 THEN 1 ELSE NUM2/NUM1 END FILED2

FROM (

SELECT COUNT(A.NUMBER_ID) AS NUM1 ,C.MODEL_NAME,COUNT(B.NUMBER_ID) AS NUM2

FROM(

SELECT NUMBER_ID ,MODEL_ID FROM SAJET.G_IPQC_CONFIG

WHERE ENABLED ='Y'

${if(班别=='白班',

"AND TO_NUMBER(SUBSTR(START_TIME,0,2))>=8 AND TO_NUMBER(SUBSTR(START_TIME,0,2))<20

AND TO_NUMBER(SUBSTR(END_TIME,0,2))>8 AND TO_NUMBER(SUBSTR(END_TIME,0,2))<=20",

"AND (TO_NUMBER(SUBSTR(START_TIME,0,2))>=20 OR TO_NUMBER(SUBSTR(START_TIME,0,2))<8)

AND (TO_NUMBER(SUBSTR(END_TIME,0,2))>20 OR TO_NUMBER(SUBSTR(END_TIME,0,2))<=8)")}

)A

LEFT JOIN SAJET.SYS_FIPQC_CONFIG B ON A.NUMBER_ID=B.NUMBER_ID

AND A.MODEL_ID=B.MODEL_ID AND B.ENABLED='N'

${if(班别=='白班',

"AND B.CREATE_DATE >=TO_DATE('${开始} 08:00:00','YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE('${开始} 20:00:00','YYYY-MM-DD HH24:MI:SS')",

"AND B.CREATE_DATE >=TO_DATE('${开始} 20:00:00','YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE('${开始1} 08:00:00','YYYY-MM-DD HH24:MI:SS')")}

LEFT JOIN SAJET.SYS_MODEL C ON A.MODEL_ID=C.MODEL_ID

WHERE 1=1

GROUP BY C.MODEL_NAME)

WHERE 1=1

ORDER BY MODEL_NAME 

image.png

FineReport 帆软用户mVQ2gDxk8Q 发布于 2023-6-16 11:06
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-6-16 11:10

SELECT MODEL_NAME ,

CASE WHEN NUM2=0 THEN 0 ELSE NUM2/NUM1 END FILED1,

CASE WHEN NUM2=0 THEN 1 ELSE NUM2/NUM1 END FILED2

FROM (

SELECT COUNT(A.NUMBER_ID) AS NUM1 ,C.MODEL_NAME,COUNT(B.NUMBER_ID) AS NUM2

FROM(

SELECT NUMBER_ID ,MODEL_ID FROM SAJET.G_IPQC_CONFIG

WHERE ENABLED ='Y'

${if(班别=='白班',

"AND TO_NUMBER(SUBSTR(START_TIME,0,2))>=8 AND TO_NUMBER(SUBSTR(START_TIME,0,2))<20

AND TO_NUMBER(SUBSTR(END_TIME,0,2))>8 AND TO_NUMBER(SUBSTR(END_TIME,0,2))<=20",

"AND (TO_NUMBER(SUBSTR(START_TIME,0,2))>=20 OR TO_NUMBER(SUBSTR(START_TIME,0,2))<8)

AND (TO_NUMBER(SUBSTR(END_TIME,0,2))>20 OR TO_NUMBER(SUBSTR(END_TIME,0,2))<=8)")}

)A

LEFT JOIN SAJET.SYS_FIPQC_CONFIG B ON A.NUMBER_ID=B.NUMBER_ID

AND A.MODEL_ID=B.MODEL_ID AND B.ENABLED='N'

${if(班别=='白班',

"AND B.CREATE_DATE >=TO_DATE('"+开始+ " 08:00:00','YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE('"+开始+ " 20:00:00','YYYY-MM-DD HH24:MI:SS')",

"AND B.CREATE_DATE >=TO_DATE('"+开始+ " 20:00:00','YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE('"+开始1 +" 08:00:00','YYYY-MM-DD HH24:MI:SS')")}

LEFT JOIN SAJET.SYS_MODEL C ON A.MODEL_ID=C.MODEL_ID

WHERE 1=1

GROUP BY C.MODEL_NAME)

WHERE 1=1

ORDER BY MODEL_NAME 

  • CD20160914 CD20160914 回复 帆软用户mVQ2gDxk8Q(提问者) 就是拼接的语法。。你仔细看我的,就是你判断班别那里和时间,要用+
    2023-06-16 11:15 
最佳回答
0
free_zzLv6中级互助
发布于2023-6-16 11:10

${if(班别=='白班',

"AND B.CREATE_DATE >=TO_DATE(CONCAT(开始,' 08:00:00'),'YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE(CONCAT(开始,' 20:00:00'),'YYYY-MM-DD HH24:MI:SS')",

"AND B.CREATE_DATE >=TO_DATE(CONCAT(开始,' 20:00:00'),'YYYY-MM-DD HH24:MI:SS') 

AND B.CREATE_DATE <TO_DATE(CONCAT(开始,' 08:00:00'),'YYYY-MM-DD HH24:MI:SS')")}

最佳回答
0
linbodingLv6中级互助
发布于2023-6-16 11:12(编辑于 2023-6-16 11:12)

------------

  • 4关注人数
  • 182浏览人数
  • 最后回答于:2023-6-16 11:12
    请选择关闭问题的原因
    确定 取消
    返回顶部