9
回答
SQL两表查询,结果错误,请高手赐教
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

我有两个表,A表是【运行记录】,B表是【钢种标准】——字段钢种唯一,是数据标准。
【运行记录】表:

【钢种标准】表


要求:查询【运行记录】表中连铸钢种所有数据和,和不符合【钢种标准】的数据和,按连铸钢种分组求出
下表是运行结果,不合格数和Si不合格数均不对,如何修改?请高手赐教!
运行代码:
select 连铸钢种,count(连铸钢种) as 炉数,(select count(连铸钢种) from 运行记录 where 连铸钢种 in (select 钢种 from 钢种标准 where 连铸钢种=钢种 and 中包C<C下)) as 不合格数 ,(select count(中包Si) from 运行记录,钢种标准 where 中包Si < Si下 and 连铸钢种=钢种 ) as Si不合格数2 from 运行记录 group by 连铸钢种 


<无标签>
举报
zyzg8058
发帖于5个月前 9回/249阅

select 连铸钢种, count(连铸钢种) as 炉数, sum(case when 中包C<C下 then 1 ELSE 0 END ) as 不合格数, sum(case when 中包Si<Si下 then 1 ELSE 0 END ) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 连铸钢种 = 钢种 group by 连铸钢种

 

试试这个.

谢谢各位网友的帮助!我按照Shabby-滔提供的方法进行了原因查询:

1. case when 不支持Access 数据库,用iif函数代替。

2. on 连铸钢种 = 钢种 改为  on运行记录.连铸钢种 = 钢种标准.钢种

修改后的查询语句:

select 连铸钢种 ,count(连铸钢种) as 炉数,sum(iif(中包C<C下,1,0)) as 不合格数, sum(iif(中包Si<Si下,1,0)) as Si不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 运行记录.连铸钢种=钢种标准.钢种 group by 连铸钢种

再次感谢各位高手的帮助!

 

引用来自“Shabby-滔”的评论

select 连铸钢种, count(连铸钢种) as 炉数, sum(case when 中包C<C下 then 1 ELSE 0 END ) as 不合格数, sum(case when 中包Si<Si下 then 1 ELSE 0 END ) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 连铸钢种 = 钢种 group by 连铸钢种

 

试试这个.

谢谢您的帮助!

select 连铸钢种 ,count(连铸钢种) as 炉数,sum(iif(中包C<C下,1,0)) as 不合格数, sum(iif(中包Si<Si下,1,0)) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 运行记录.连铸钢种=钢种标准.钢种 group by 连铸钢种

顶部