COUNT(CASE WHEN C.需求时间 <= A.完成时间 THEN C.需求时间 ELSE NULL END) AS 按期,COUNT(CASE WHEN C.需求时间 <= A.完成时间 THEN NULL ELSE C.需求时间 END) AS 超期,
count case when 我能理解,但是他这里边嵌套的是啥意思?第一句需求时间小于等于完成时间不应该是超期吗?
求大神帮忙解读一下
看你这个SQL应该是统计超期的数量和按期的数量,但是根据正常业务逻辑来说两个写反了,把AS按期和AS超期换一下应该是对的,具体看你的业务
这哪是sql问题啊,这个是你业务逻辑的问题。
你找个需求时间和完成时间的数据跑一下这个sql,时间是按期跑出来超期那说明sql写错了。
第一个 按期的意思是 如果 C.需求时间<=A.的完成时间的话 拿就是C.的需求时间 否则 是空值
第二个 超期的意思是 如果 C.需求时间<=A.的完成时间的话 拿就是空值,否则是需求时间
这明细写的有问题 都是判断C.需求时间<=A.的完成时间的话 一条就可以
看你的要超期的话就是
COUNT(CASE WHEN C.需求时间 <= A.完成时间 THEN 超期 ELSE (条件自己写) END) AS (名称),
换一种方式解读
完成时间 是 预定的截至时间 花呗还款截至日期
需求时间 是 实际的完成时间 你实际还款的时间
建议你先case when 判断 然后再整句sql外面嵌套一层count 这样不容易错