感谢大神热心回复,思路较清晰,但小弟使用帮助测试未通过,另外,我需要结果A,B,C,D分别统计和值放在,请赐教,跪谢!
追答使用帮助测试未通过?啥意思?
什么叫做结果A,B,C,D分别统计和值放在?啥意思?
我是按照你给的结果写的,一般而言出来的结果应该是和你要的结果类似,就是没有上面的那个ZL,因为数据库粒度没办法改变,所以是ZL_A,zl_b,zl_c,zl_d四个。
再有什么地方没通过?那个子查询,还是后面的查询?说清楚啊,这里没办法测试,只能是你自己测试。所以就要麻烦你说清楚了。
不好意思,测试时提示语句错误,小弟功力尚浅,还望多加指教。多谢!
追答你直接复制的吧?
select a.cpdm,case when a.id=b.x_id then b.dm else c.dm end dm,case when a.id=b.x_id then b.zl else c.zl end zl
from table_t a,table_x b,table_y c where a.tp=1 and (a.id=b.x_id or a.id=c.y_id)
出来的结果是啥?
如果可以的话,贴出来看看。
代码通过了,但是结果好像不对,麻烦大神再帮我看看。
这是您第一段代码的结果
这是您第二段代码的结果
这是您第三段代码的结果,这里4001共有56个。
烦请大神帮我再研究研究,非常感谢!
TP=1的4001共56个?这其中dm=A的28个,dm=B的多少个,dm=c的呢?d的呢?按照你的给的最终表格看,每个dm(也就是A、B、C、D)的个数应该是一致的吧。有没有不一致的情况?
比如:(这部分最好手查,本来内容就不多可以手查,要是写代码估计内容就更多了)
在tp=1的条件下,dm=A的有28个,dm=B的10个,dm=C的10个,dm=D的8个,你的56个是这个意思么?
还是说等于A的就有56个?
我这里是在是没有环境,你贴的第一张图片,是你要的结果么?还是说什么结果不对。
这样,给你个建议,你不要用你真实的数据做,你就用你给的那三张测试表的数据做,这样我这里能看出问题出在哪里,要怎么去改,而且数据料较小,也好控制。现在你给的跟测试表不一致,我这里也不知道你的确切数据,没办法具体改动。